【问题标题】:TFS 2010 - How to resolve conflict when merging into a parent branch with the file renamed?TFS 2010 - 合并到父分支并重命名文件时如何解决冲突?
【发布时间】:2012-10-14 10:32:48
【问题描述】:

我一直在调查在 TFS 2010 中合并分支时遇到的任何潜在问题。

我尝试过的所有组合都完美无缺,除了一个,我希望有人能帮助我理解为什么它不起作用和/或我做错了什么。

它是完全可重现的,我已经在下面描述了。

问题场景

环境:

  • 两个分支中都有一个 C# 库项目,名为 MyProject。
  • 每个项目中有两个类,分别称为 MyClass 和 MyOtherClass。
  • 分支 A 是父分支,分支 B 是从它创建的。

场景:

  • MyClass.cs 在分支 A 中被编辑并重命名为 MyClassRenamed.cs。
  • 编辑 MyClass.cs,在分支 B 中发生冲突更改,但保留其名称。

结果:

  • 合并更改会产生一个冲突。
  • 冲突不能自动合并,它只表示文件内容有问题,而不是名称更改。
  • 解决冲突后,无论文件在解决冲突时使用什么名称,都会在两种环境中使用不同名称的文件。

正确的场景

有趣的是,如果场景颠倒,行为会有所不同,见下文。

  • 编辑 MyClass.cs,在分支 A 中发生冲突更改,但保留其名称。
  • MyClass.cs 在分支 B 中被编辑并重命名为 MyClassRenamed.cs。

结果:

  • 合并会产生两个冲突。
  • 一个冲突是项目文件,另一个是重命名的文件。
  • 重命名文件的冲突不能自动合并,但它会通知名称已更改并要求合并文件的新名称。
  • 然后您可以合并对该文件的更改。
  • 然后您可以合并项目文件的更改。
  • 解决冲突后,无论文件在解决冲突时使用什么名称,都会在两种环境中使用不同名称的文件。
  • 一切都按预期工作,文件在两个环境中都被重命名,并且更改保持同步。

结论

据我所知,唯一的解决方案是避免重命名文件并在合并后手动修复问题,如果有自动化的方法可以做到这一点,我会犹豫不决。

【问题讨论】:

    标签: visual-studio-2010 tfs merge branch


    【解决方案1】:

    让我稍微扩展一下你的场景。

    • MyClass.cs 在分支 A 中被编辑并重命名为 MyClassRenamed.cs。

    • 编辑 MyClass.cs,在分支 B 中发生冲突更改,但保留其名称。

    • 其中一个分支必须合并到集成分支(假设是分支 A)

    • 此时,分支 B 的团队决定将更改合并到集成分支。 作为一种好的做法,在合并到 Integration 之前,他们应该从 Integration 中拉下更改并合并到分支 B。只有在他们这样做并修复冲突之后,他们才会将分支 B 合并到 Integration。

    • 下次合并分支 A 时,他们也应该遵循良好的做法。

    上述做法应该可以解决不同分支中文件名不同的问题。

    【讨论】:

    • 阿列克谢是正确的。使用我的示例,在将分支 B 的更改合并到分支 A 之前,我忘记将分支 A 的更改合并到分支 B。一旦我这样做了,一切都按预期工作。
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多