获取SVN中的所有分支名称

时间:2012-02-01 22:59:25

标签: svn

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

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

4 个答案:

答案 0 :(得分:83)

  • svn help 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“|”对于排除分隔线,使用<任何选择工具>,从“更改路径”文件名获取受影响的分支,从修订日志的第一个字符串开始日期。

答案 1 :(得分:4)

您可以随时使用" - xml"而不是" - 详细" RESP。 " -v&#34 ;.产生机器可读输出而不是"人类可读输出"由" - verbose"产生。无需删除分隔线等。使用xmlstarlet或使用适当的XQuery脚本(Saxon,...)提取所需内容。

答案 2 :(得分:2)

使用命令替换结合@ Lazy的答案和this answer,您可以将它全部放在一个命令中:

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

(取决于您的svn repo布局,如有必要,请进行更改。)

答案 3 :(得分:0)

我想出了另一种方法,但你需要sventon或其他工具来列出你的SVN存储库的所有内容。

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

第2步:打开Excel并执行特殊粘贴。

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

结果:所有小于x岁的分支。这个列表对我来说很有用svn delete --targets listofoldbranchnames.txt