TFS总是在项目文件上存在冲突,它拒绝自动合并,就像它对代码文件一样

时间:2018-03-01 17:04:15

标签: tfs version-control merge-conflict-resolution project-files

每个单一时间我通过添加/重命名/移动/移除更改来取消更改集  我有必要手动合并接收大量活动的父项目文件(大部分代码库嵌套在一个项目下,因此其项目文件的版本经常更改)。

这是每天多次受挫,似乎TFS应该能够为我做这个,因为更改很简单(例如,在最新版本中删除已删除文件的行并添加新行本地版本的文件)。我的结论是因为它以这种方式智能地运行代码文件以自动修改版本。

那么为什么automerge对项目文件的行为与对代码文件的行为不同?

例如,开发人员A创建一个变更集,将一个文件添加到项目中并将其搁置以供审阅。然后另一个开发人员B检查项目的更改,该项目还添加了一个文件(不相关),所以当我去取消开发者A的更改时,我必须解决项目文件中的冲突。

此外,如果移动/重命名/添加了一组文件,并且我希望仅通过一次影响更改来取消搁置,则只需获取项目文件的服务器版本并手动重新应用单个更改(例如,添加现有文件)而不是在数千行中合并十几个展开的更改。 (并且上帝禁止你进行重命名更改并获取项目文件的服务器版本,因为那时你需要用文本编辑器手动编辑它来重命名,否则你会因为重命名的文件已经存在于磁盘上而得到一系列错误尝试从解决方案资源管理器重命名时。)

使用VS2014,我们的代码库主要位于一个巨大的数据库项目(* .sqlproj)下。

1 个答案:

答案 0 :(得分:0)

最有可能的是,不同的文件被添加到文件的同一行,因为在大多数情况下,项目文件是自动生成的,与常规代码不同,很难说VS哪一行VS会在有人插入新文件项时将它添加到前端。如果2个人同时向项目添加新项目,很可能会获得项目文件的2个版本,这些新项目写在同一行上,这将导致冲突。有时,(例如,如果您添加引用),每个项目不止一行,这使合并更加糟糕。 我建议每个对项目文件进行更改的开发人员使用锁(独占)进行检查,这样一次就会有一个更改。此外,确保其他开发人员在进行更改之前获取最新信息(在工具>选项>源代码管理> Visual Studio Team Foundation Server下)Visual Studio中有一个设置。这将使自动合并工作。