【问题标题】:Get all branch names in SVN获取SVN中的所有分支名称
【发布时间】:2012-02-01 22:59:25
【问题描述】:

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

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

【问题讨论】:

  • 出于兴趣:想要 x 年前“诞生”的分支吗?或者您是否在寻找 x 年没有任何活动的分支机构?

标签: svn


【解决方案1】:
  • 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 "|"对于排除分隔线,使用,从“更改的路径”文件名中获取受影响的分支,日期从修订日志的第一个字符串开始。

【讨论】:

  • svn ls 似乎对我有用。 svn log 有太多细节。你能告诉我如何只从 svn ls 中 grep 日期 > xx 的那些行。谢谢
  • 这对于识别和构建 jenkins 中的最新分支非常有用
  • 可以使用相对路径代替url:svn ls ^/branches --verbose
【解决方案2】:

您始终可以使用“--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 repo 布局,如有必要,请更改。)

    【讨论】:

      【解决方案4】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 2018-11-17
        • 2017-12-03
        • 2021-10-29
        • 2015-05-14
        相关资源
        最近更新 更多