获取SVN中所有分支的名称

64

如何获取所有超过x年的SVN分支列表?

我在CentOS上使用SVN,并使用sventon查看所有存储库。


1
你是想要查找 x 年前“创建”的分支吗?还是想要查找 x 年内没有任何活动的分支? - A.H.
4个回答

91
  • svn帮助 ls

如果您使用仓库分支根目录的URL并启用详细输出,您将得到类似于以下内容:

svn ls http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/ --verbose
     28 lazybadg              фев 22  2011 ./
     28 lazybadg              фев 22  2011 Leichtbau-Deutsch/
     26 lazybadg              фев 22  2011 branche-francaise/
     25 lazybadg              сен 14  2010 i18n/

gawk中,3+4+5字段将给出分支的最后更改日期。
  • svn help log
稍微复杂且有噪音的输出,但有一个优点:可读的日期。
svn log http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/ -v -q
------------------------------------------------------------------------
r28 | lazybadger | 2011-02-22 09:24:04 +0600 (Вт, 22 фев 2011)
Changed paths:
   M /branches/Leichtbau-Deutsch/Hello.de.txt
------------------------------------------------------------------------
r27 | lazybadger | 2011-02-22 09:21:41 +0600 (Вт, 22 фев 2011)
Changed paths:
   A /branches/Leichtbau-Deutsch (from /trunk:26)
------------------------------------------------------------------------
r26 | lazybadger | 2011-02-22 06:49:41 +0600 (Вт, 22 фев 2011)
Changed paths:
   A /branches/branche-francaise (from /trunk:25)
   M /branches/branche-francaise/Hello.fr.txt
------------------------------------------------------------------------

使用任何工具,通过 "| grep -v" 命令来排除分隔线,在 "Changed paths" 文件名中获取受影响的分支,并从修订日志的第一行中获取日期。请保留HTML标签。

svn ls 对我来说似乎可以工作。svn log 有太多细节了。你能告诉我如何仅从 svn ls 中 grep 那些日期 > xx 的行吗?谢谢。 - user1164061
这将非常有助于在Jenkins中识别和构建最新的分支。 - ldgorman
15
可以使用相对路径代替 URL: svn ls ^/branches --verbose - deflomu

4

你可以始终使用"--xml"代替"--verbose"或"-v"。这将产生机器可读的输出,与"--verbose"提供的"人类可读的输出"不同。无需删除分隔线等内容。使用xmlstarlet或适当的XQuery脚本(Saxon等)提取所需内容。


3

结合@Lazy的回答和this answer,使用命令替换,您可以将所有内容放在一个命令中:

svn ls `svn info | grep '^URL' | awk '{sub(/trunk.*$/, "branches", $NF); print}'` -v

(根据您的svn存储库布局而定,如有必要请更改。)

0

我找到了另一种方法来完成这个任务,但你需要使用sventon或其他列出SVN存储库所有内容的工具。

步骤1:从sventon视图中复制分支列表。这将包括修订版本、作者和日期。

步骤2:打开Excel并进行特殊粘贴。

步骤3:过滤日期列以显示少于x年的日期。

结果:所有少于x年的分支。这个列表对我很有用,可以使用svn delete --targets listofoldbranchnames.txt命令删除它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接