我一直在调查在 TFS 2010 中合并分支时遇到的任何潜在问题。
我尝试过的所有组合都运行良好,除了一个,我希望有人能帮助我理解为什么它不起作用和/或我做错了什么。
它是完全可重现的,我在下面描述了如何。
问题场景
环境:
- 两个分支中都有一个 C# 库项目,称为 MyProject。
- 每个项目中有两个类,分别称为 MyClass 和 MyOtherClass。
- 分支 A 是父分支,分支 B 是从它创建的。
场景:
- MyClass.cs 在分支 A 中被编辑并重命名为 MyClassRenamed.cs。
- MyClass.cs 在分支 B 中使用冲突更改进行编辑,但保留其名称。
结果:
- 合并更改会产生一个冲突。
- 冲突不能自动合并,它仅表明文件内容存在问题,而不是名称更改。
- 修复冲突会在两种环境中为您留下不同名称的文件,尽管解决冲突时文件具有什么名称。
正确的场景
有趣的是,如果场景相反,行为会有所不同,见下文。
- MyClass.cs 在分支 A 中使用冲突更改进行编辑,但保留其名称。
- MyClass.cs 在分支 B 中被编辑并重命名为 MyClassRenamed.cs。
结果:
- 合并会产生两个冲突。
- 一个冲突是项目文件,另一个是重命名的文件。
- 重命名文件的冲突不能自动合并,但它会通知名称已更改并要求合并文件的新名称。
- 然后,您可以合并该文件的更改。
- 然后,您可以合并项目文件的更改。
- 修复冲突会在两种环境中为您留下不同名称的文件,尽管解决冲突时文件具有什么名称。
- 一切都按预期工作,文件在两个环境中都被重命名,并且更改保持同步。
结论
据我所知,唯一的解决方案是避免重命名文件并在合并后手动修复问题,如果有自动化的方法可以做到这一点,我会犹豫不决。