Subversion通过其名称的一部分查找标记(在Windows上)

时间:2014-02-06 15:08:44

标签: php windows svn tags cmd

如何通过名称的一部分找到标签?

我在存储库上有结构

/中继线
/标签
/还原
/ 86__20140206_123000
/ 85__20140205_123000
/ {rev_no} {2×_} {} YYYYMMHH {1X _} {HHiiss}

我正在进行恢复程序:Trunk有问题,所以php脚本会这样做:
1.复制/标记/将标记恢复为/ trunk
2.将带有最大修订号no的标签复制到/ tags / Revert
3.删除复制在第2点。标签

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

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

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


有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

前言

OMFG!

  • 谁为SVN-repository发明了这种愚蠢的恢复策略?

    1. 通过反向合并错误修订(“最后知道”)以自然的,以大脑为动力的方式撤消修订
    2. 单个 Last-Known-Good可以作为自定义svn-property存储在trunk中,而不是标记的混乱
  • 谁为标签发明了这种无脑的命名?

标签(和任何其他节点)本身包含所有需要的数据,可通过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/

您可以使用最后一行的标记名称并合并网址,或使用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将为您识别最新标记