我对Subversion和Subclipse都很陌生,并且看到一些问题让我相信更新头部和同步之间存在差异。具体来说,我发现当我尝试恢复(使用subclipse历史记录)时,我经常会收到一条消息,说“无法从路径自己的未来历史中反转合并范围,请先尝试更新”。我的同步应该确保我在REPO上的分支中拥有所有文件的“head”版本,但是执行“Update to head”确实解决了问题...那么是什么给出了?我试图检查SVN控制台,看看有什么变化,但它不是很冗长。
想法?
我还有第二个问题,但我假设第一个问题的答案将会阐明它。如果你很好奇并有时间阅读,我也会打字。这是场景......我从“生产”标签中分支了所有文件,并开始处理我的项目。在几次提交之后,我检查一个已更改文件的历史记录,并注意到“粗体”版本(根据文档,这应该是头部)低于我的所有提交。就好像我拥有的不是头脑。但是头部只是该项目的最新版本吗?所以我错过了什么。
感谢您的回复并花时间阅读本文!
答案 0 :(得分:28)
有区别。使用“同步”视图时,仅更新视图中的项目。使用Subversion时,每次修改子项时,文件夹都会有一个版本。但是,由于这些不会出现在视图中,因此它们永远不会更新。当你做Team>更新项目,所有文件夹和文件都更新为单个统一修订版。我有几篇博文解释了这一点:
这个解释了混合修订工作副本的核心SVN概念,对于理解这一点至关重要:
http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html
第二个显示Subclipse中的一个功能来处理这个问题:
http://markphip.blogspot.com/2006/12/subclipse-synchronize-feature-show-out.html
自写第二篇博客以来,大多数Subclipse用户发现他们不喜欢这个功能,即使它有助于解决这个问题。所以现在它在当前版本中默认关闭。我不认为有人再使用它了。
主要是偶尔使用Team>更新您的项目,将其全部统一到一个统一版本。
标记
答案 1 :(得分:2)
我认为您假设同步与更新HEAD相同是错误的。如果,在Subclipse的说法中,“synchronize”意味着“提交”,那么它肯定是错误的,因为提交不会更新您的工作副本。您必须在提交到HEAD后明确更新。
这引出了我的第二个问题:我认为粗体线低于其他提交的原因是由于上述原因 - 提交不更新。这意味着您可以提交对文件的更改,然后查看另一个文件并将其视为比HEAD更旧,因为这些其他文件还没有被带到HEAD。
本文可能有助于澄清混合修订的概念:http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html
我还鼓励您熟悉SVN documentation,因为当您了解底层SVN系统的工作原理时,使用Subversion的插件和扩展会变得更加容易。