【问题标题】:Merges and commits svn keeps showing me files without changes but with mergeinfo changed合并和提交 svn 不断向我显示没有更改但合并信息已更改的文件
【发布时间】:2011-03-17 12:38:12
【问题描述】:

我正在做许多 svn 合并和提交。 我(在每次提交中)总是发生的事情是有一组恒定的文件,例如 a.java b.java foldera folderb 等,以及 svn 提交对话框总是向我显示的更多文件我应该提交它们但是文件它们自己没有改变,它的显示改变的是它们的合并信息,但实际上我不明白为什么它在提交对话框中向我显示它们,因为无论我进行多少次合并,提交对话框总是显示这些文件我,即使我在源分支中我只更改了一个文件我确实提交了我看到这组文件,如果我在源分支中更改另一个文件并合并到新分支然后再次提交我再次看到这组文件(比如15个文件...) 无论如何,请知道我该如何克服这个问题?

谢谢

【问题讨论】:

    标签: svn merge


    【解决方案1】:

    这通常是由于 svn:merge-info 属性设置在分支上的较低级别而导致的。如果有人在较低级别进行合并,就会发生这种情况。我尝试在分支级别进行所有合并,以确保在进行合并时没有丢失文件。

    如果您知道您没有丢失的更改,您可以将这些 svn:merge-info 属性的值移动到分支的顶层,然后从较低级别删除该属性。

    这将防止 svn:merge-info 在查看存储库差异时出错。

    【讨论】:

    • "将这些 svn:merge-info 属性的值移动到分支的顶层" - 我该怎么做?如果我有多个分支 1.1、1.2、1.3、1.4、1.5,我应该将合并信息移动到哪里,这样我就不会在所有分支中出现此错误? (我总是在从 1.1 到 1.2 再到 1.3 进行合并...)谢谢
    • 您可以像编辑任何其他属性一样简单地编辑 svn:merge-info 属性。你可以使用svn pedit命令就可以了。
    • 我仍然不明白为什么它会发生在我身上。在比顶层更低的级别进行合并之间有什么联系?我在各种文件夹中遇到了这个问题,包括低级和顶级...
    • 问题:为什么 svn 要求提交 svn:merge-info 属性以防更新?我以为 svn 会告诉我只提交常规文件,为什么它还会在提交列表框中显示这些文件?它不应该只是默默地提交它们吗??
    • 之所以设置在较低级别,是因为如果不从分支顶部合并,可能会丢失在不同子分支中修改的文件比你合并的那个。一旦属性在子分支上设置一次,就需要永远保持最新。我尽量避免这个问题,总是自上而下合并。
    【解决方案2】:

    这通常是因为 SVN 管理合并的方式。它在文件上添加了一个属性,说明文件是从哪些分支/修订版合并的。

    因为根据我的经验(或缺乏)svn 并不擅长跟踪合并,所以我在合并时使用标志 --ignore-ancestry。这通常会消除这些问题,并且不会更新 mergeinfo 属性。

    勾选右边,同一个主题还有很多其他问题。

    如果您想尝试新的东西,请将您的存储库移动到 mercurial 或 git 以避免所有的合并废话:)。

    【讨论】:

    • 您好,感谢您提供信息丰富的回复,为了更好地理解这一点,我想请教您,如果我使用 --ignore-ancestry 那么这是否意味着 svn 不会记住哪些修订我已经合并到我的分支了?所以下次我合并时,如果我包含我已经合并的以前的修订,它会认为它需要重新合并它们,这会导致我合并问题?
    • 为什么 git/mercurial 会删除合并的废话?我有多个版本的分支,例如 1.1 1.2 1.3,即使我在 git 或 mercurial 上,我们也需要从 1.1 到 1.2 再到 1.3 进行合并,谢谢
    • 关于第一条评论:是的,但是您可以合并一系列修订,这就是我所做的……我并不是说这是最好的,但它是我发现的最好的。关于 Git 和 Mercurial,它们在管理合并方面与 svn 相差数百万光年。它们都以不同的方式跟踪文件中的提交和更改,这使得合并几乎没有麻烦。检查this other SO 中的帖子,它解释了 git 如何管理合并。
    • 这听起来像是一个非常严重的错误......为什么服务于我认为数百万人的svn有这样一个基本错误?改变技术并不是那么简单,特别是如果你有数百名开发人员,我知道有很多像 jboss apache 这样的开源项目使用 svn,我不明白为什么我不应该在这个阶段 - 也许更进一步我会改变,但对我来说很奇怪那里有这样一个基本的错误......我想我需要向我正在使用的 svn 实现者打开一个错误......听起来正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2013-03-18
    • 1970-01-01
    • 2019-02-28
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多