【问题标题】:Subversion find tag by part of its name (on windows)Subversion 按名称的一部分查找标签(在 Windows 上)
【发布时间】:2014-02-06 15:08:43
【问题描述】:

如何通过部分名称查找标签?

我在存储库中有结构

/主干
/标签
/还原
/86__20140206_123000
/85__20140205_123000
/{rev_no}{2x_}{YYYYMMHH}{1x_}{HHiiss}

我正在处理恢复程序:Trunk 有故障,所以 php 脚本可以:
1. 复制 /tags/Revert 标签到 /trunk
2. 将修订号最高的标签复制到 /tags/Revert
3. 删除第 2 点中的复制。标签

所以下一次提交(通过 php)将是:
1. 复制 /tags//恢复到 /tags/{rev_no}{2x__}{now_date_time} 标签
2. 复制 /trunk 到 Revert 标签
3. 将(从 dev 分支复制)新员工放到 /trunk/

创建、删除、复制工作正常。
唯一的问题是我需要找到(在 Windows 上)标签以复制到 Revert,仅基于其名称的一部分:我有 {rev_no}{2x_}
svn 复制 [repo]/tags/ |找到“86
_*”/。 [回购]/主干
给出结果:找不到文件 - “86__*”/;
事实上,我尝试了很多选择,但都失败了,现在没有想法了。

我通过 php execute 发出这些命令,所以我想我需要尝试单个命令来捕获标签名称和下一个命令来将其内容复制到主干。


有没有办法做到这一点?

【问题讨论】:

  • 你听说过svn ls吗?

标签: php windows svn tags cmd


【解决方案1】:

前言

天啊!

  • 谁为 SVN 存储库发明了这种愚蠢的恢复策略?

    1. 通过反向合并不良修订(到“Last-Known-Good”)以自然、脑力驱动的方式撤消修订
    2. Single Last-Known-Good 可以作为自定义 svn-property 存储在行李箱内,而不是混乱的标签
  • 是谁发明了这种无脑的标签命名方式?

标签(和任何其他节点)本身包含所有需要的数据,可通过svn lssvn log(src、src rev、创建时间戳)访问

如果你想为所有人消除未来的麻烦,最好的选择是重新设计从头开始(见我上面的笔记 1-2)

唯一的问题是我需要找到(在 Windows 上)标签以复制到 Revert

如果修订是标签名的前导部分,并且因为 Windows sort 它比可怕更糟糕,您必须重命名所有标签并添加前导零以正确数字排序,没有它排序会给出你有点像

/125__20140207_123000
/85__20140203_123000
/86__20140204_123000
/99__20140205_123000

或者,有成千上万的集合

/125__20140207_123000
/4025__20140307_123000
/85__20140203_123000
/86__20140204_123000
/99__20140205_123000

相反

/0085__20140203_123000
/0086__20140204_123000
/0099__20140205_123000
/0125__20140207_123000
/4025__20140307_123000

无论如何,所有现有标签的列表都是svn ls URL。 AFAICR(TBT !!!),无论名称如何,最新的标签总是在底部

> svn ls http://websvn.tigris.org/svn/websvn/tags
1.00/
1.01/
1.02/
...
2.3.3/

你可以使用最后一行的标签名并结合 URL,或者使用svn ls -v

>svn ls -v http://websvn.tigris.org/svn/websvn/tags
   1268 dirkthom              июн 27  2011 ./
      2 tarmes                фев 04  2004 1.00/
      7 tarmes                фев 05  2004 1.01/
     14 tarmes                фев 06  2004 1.02/
    ...
   1268 dirkthom              июн 27  2011 2.3.3/

并在第一列 (1268 dirkthom июн 27 2011 2.3.3/) 中通过最大修订找到最新鲜的标签(最后一列)或使用 svn log 作为标签,仅用于最新修订,带有文件列表,并获取最后一个标签作为受影响文件的一部分

>svn log -l 1 http://websvn.tigris.org/svn/websvn/tags -q -v
------------------------------------------------------------------------
r1268 | dirkthomas | 2011-06-27 15:12:51 +0600 (Пн, 27 июн 2011)
Changed paths:
   M /package.cmd
   M /package.sh
   A /tags/2.3.3 (from /branches/2.3:1266)
   ...

A /tags/2.3.3 将为您识别最新标签

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 2011-02-27
    • 2020-02-20
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多