【问题标题】:SVN Synchronize vs Update to Head (subclipse)SVN 同步与更新到头部(子剪辑)
【发布时间】:2011-01-13 14:53:15
【问题描述】:

我对 Subversion 和 Subclipse 都很陌生,并且看到一些问题让我相信更新到 head 和同步之间存在差异。具体来说,我发现当我尝试还原(使用子剪辑历史)时,我经常收到一条消息,说“无法从路径自己的未来历史中反向合并范围,请先尝试更新”。我的同步应该确保我在 REPO 上的分支中拥有所有文件的“头”版本,但是执行“更新到头”确实可以解决问题......那有什么好处呢?我尝试检查 SVN 控制台以了解发生了什么变化,但它不是很冗长。

想法?

我有第二个问题,但我假设第一个问题的答案会说明问题。如果你好奇并有时间阅读,我也会把它打出来。这是场景......我已经从“生产”标签中分支了我的所有文件,并开始处理我的项目。几次提交后,我检查了更改文件的历史记录,并注意到“粗体”版本(根据文档,这应该是头部)低于我的所有提交。就好像我拥有的​​不是头。但是 head 只是项目的最新版本,对吧?那我错过了什么。

感谢您的回复并花时间阅读本文!

【问题讨论】:

    标签: svn repository subclipse revert


    【解决方案1】:

    我认为您认为同步与更新到 HEAD 相同的假设是错误的。如果用 Subclipse 的说法,“同步”意味着“提交”,那么它肯定是错误的,因为提交不会更新您的工作副本。在您承诺成为 HEAD 后,您必须明确更新。

    这让我想到了你的第二个问题:我认为粗体线低于其他提交的原因是由于上述原因 - 提交不会更新。这意味着您可以提交对文件的更改,然后查看另一个文件并认为它比 HEAD 更旧,因为其他文件还没有被带到 HEAD。

    这篇文章可能有助于澄清这种混合修订的概念:http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

    我还鼓励您熟悉SVN documentation,因为当您了解底层 SVN 系统的工作原理后,使用 Subversion 的插件和扩展总是会变得更容易。

    【讨论】:

    • 嗨,迈克,我看过那篇文章,但我不确定这是否适用。尽管提交不会更新您的工作副本,但同步应该。我不仅看到传出的变化,而且看到传入的变化。那不是和更新一样吗?
    • 啊,答案在那篇文章中,但在关于文件夹的部分!当我提交一个文件时,它的父文件夹不会移动到我的修订版。它知道修订版(存在于历史记录中),但不会向上移动。同步忽略了这一点,但 HEAD 的更新解决了它。
    【解决方案2】:

    有区别。当您使用同步视图时,仅更新视图中的项目。使用 Subversion,文件夹也有一个修订版,每次修改一个子版时都会增加一个修订版。但是,由于这些不会出现在视图中,因此它们永远不会更新。当您对项目执行团队 > 更新时,所有文件夹和文件都会更新为一个统一的修订版本。我有几篇博文对此进行了解释:

    这个解释了混合修订工作副本的核心 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 > Update 以将其全部升级为一个统一的修订版。

    标记

    【讨论】:

    • 谢谢@Mark!这篇文章和你链接的博客文章无疑帮助我理清了一些关于 SVN 和 Subclipse 的事情。
    猜你喜欢
    • 2012-02-12
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多