使用外部检查旧版本

Checking out an old revision with externals

我是 SVN Tortoise 的新手,在理解修订版和外部组件的组合时遇到了一些困难。

我正在处理的 SVN 项目有几个外部项目。其中一些是标签,还有一些指向其他SVN库项目的主干。

当我尝试回滚并查看项目的较旧版本时,我所查看的内容似乎与几周前不完全一样。指向库项目主干的外部不会回滚,但包含最新的更改。

所有外部是否都应该指向其他项目的标签,如果没有,是否意味着您不能轻易获得以前修订的快照?

When I try to roll back and look at an older revision of the project, it seems like what I check out is not exactly as it was a few weeks ago

是的。如果 externals-definition 中没有 PEG-revision,SVN 对历史状态运行 "as written",没有任何额外的启发式 "which revision was HEAD for revision REV in main-project",并使用今天的数据

Should all externals point to tags of other projects

他们可以,不应该。但您也可以阅读有关 PEG|SVN 中的操作修订,并在可变目标中使用 PEG 规范(并在新提交出现在目标中时更新定义)

比较一下这两个定义

Properties on 'tags.0.1':
  svn:externals
    -r 2 https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib@2 lib

即使 /subversion-trouble-shooting/trunk/lib 稍后会有额外的提交,具有此类定义的外部项目将始终获得修订版 2

Properties on 'trunk':
  svn:externals
    https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib

对于这个定义,trunk 的旧版本不会自动恢复 lib 的现有状态,您必须手动完成

if they don't, does it mean that you can't easily get a snapshot of a previous revision?

绝对(如果"easily"对你来说是超级仓库中的纯svn up REV