如何获取超过x年的所有SVN分支列表?
我在CentOS上使用SVN,我有sventon来查看所有存储库。
答案 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
。