获取SVN中的所有分支名称

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

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

  • 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字段会给你分支的最后更改date。

  • svn help log

稍微复杂和嘈杂的输出与一个单一的优势:一个可读的date,

 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“|” 使用<任何select工具>排除分隔线,从“更改path”文件名中获取受影响的分支,从修订日志的第一个string中获取date。

你总是可以使用“ – xml”而不是“–verbose”。 “-v”。 产生机器可读的输出,而不是像“–verbose”产生的“人类可读输出”。 无需删除分隔线等。使用xmlstarlet或使用适当的XQuery脚本(Saxon,…)提取您需要的内容。

结合@懒惰的答案和这个答案使用命令replace你可以把它放在一个命令:

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

(取决于你的svn回购布局,所以如有必要就更改。)

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

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

第2步:打开Excel并做一个特殊的粘贴。

步骤3:过滤date列以显示小于x年的date。

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