将svn checkout更新到特定日期,包括外部

pau*_*doo 8 svn history svn-externals

我想对特定日期执行svn更新,我可以这样做svn update -r {2010-10-17}.不幸的是,当遇到外部时,它将在外部进行更新而不通过-r {2010-10-17}选项.这导致我们获得了基本代码的正确过去版本,但是许多外部的最新(不需要的)版本.

如何更新到特定的修订版本或日期,并通过外部设备正确递归?

(注意:我理解这里的错误可能是使用外部而没有指定明确的修订.)

Laz*_*ger 5

我希望,任何人迟早都会将我的常识逻辑(局限于某些领域的目录类型外部)实现为bash和cmd-script,我们将对这个重复的问题得到"明确答案"

你的基本任务是:

  • svn up 你的超级回购到过去需要的点(更新到日期/没有时间/是BTW,不是最好的选择,但是 - 可以接受)
  • 获取项目中所有外部的路径列表(因为外部定义可以存在于树中的任何位置),来自WC-root svn propget svn:externals -R(-R为了检查整个树而没有很多cd)
  • 在propget子输出(与像这种格式的每个字符串. - https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib):cd到串/相对于第一字段,它是反过来的最后一个字段,是根相对路径/和svn到相同的点,因为它是完成superrepo:svn update -r {2010-10-17}

因此,您将拥有混合工作副本,但是superrepo和externals将处于"过去的某些修订"状态

注意:

在更复杂的情况下,用于构建具有外部(真正嵌套WC)的目录的本地路径的附加示例.

对于

>svn propget svn:externals -R
tags\1.0.1 - -r 2 https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib@2 lib

trunk - https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib
Run Code Online (Sandbox Code Playgroud)

我的WC中的外部决赛路径将是(相对于WC-root)

tags\1.0.1\lib
trunk\lib
Run Code Online (Sandbox Code Playgroud)