假设我设置了一些svn:externals
以从存储库中的其他地方提取一些资源:
../../path/to/scripts scripts
../../path/to/data data
我希望工作副本的每个部分都来自相同的修订,所以我不想将这些外部内容固定在特定的修订号上。如果我只是做一个svn up
,它的工作方式就像我想要的那样:
Fetching external item into 'scripts':
External at revision 15000.
Fetching external item into 'scripts':
External at revision 15000.
At revision 15000.
然而,如果我尝试检查一个特定的修订(使用svn up -r 144444
之类的东西),外部仍然来自最新的修订:
Fetching external item into 'scripts':
External at revision 15000.
Fetching external item into 'scripts':
External at revision 15000.
At revision 14444.
是否有一些svn:externals
语法或一些罐装脚本或命令,我可以使用它来轻松地更新工作副本,包括其所有外部,到特定的修订?
(特别是,我不想做svn --ignore-externals
,因为我也想更新外部到一个特定的修订,我不想把外部固定到一个固定的修订,因为我通常希望他们跟踪头。)
如果没有固定的外部,就没有简单的方法(并且使用固定的外部维护"always HEAD"是一个/容易的b/手工操作,可能会自动化)
对于非挂钩外部的"时光机",为了将整个WC的状态返回到主版本N的状态,您必须执行:
- 在wrapper-WC
svn log -l 1 -r N
中写入时间戳DATE
- 对于每个外部在每个外部WC
svn log -l 1 -r {'DATE'}
和写入修订号(X,Y,Z) -
svn up -r N
- 外部WCs的
svn up -r (X|Y|Z)
所产生的混合工作副本将需要为您的结果(不是100%保证,因为在版本N和N+1之间的外部版本可能也更新,但您没有它的踪迹)