1

每次我通过添加/重命名/移动/删除更改来取消搁置更改集或对此类更改进行挂起更改,我必须手动合并接收大量活动的父项目文件(大部分代码库嵌套在一个项目所以它的项目文件的版本变化非常频繁)。

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

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

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

此外,如果一组文件被移动/重命名/添加并且我只想取消搁置一个影响更改,则只需获取项目文件的服务器版本并手动重新应用单个更改(例如添加现有文件) 而不是合并数千行中的十几个分散的更改。(上帝禁止您更改重命名并获取项目文件的服务器版本,因为您需要使用文本编辑器手动编辑它以重命名,否则由于重命名文件已经存在于磁盘上,您将收到一系列错误尝试从解决方案资源管理器重命名时)。

更新:我正在升级这个,因为现在它把我们搞砸了

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

4

1 回答 1

0

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

于 2018-03-01T21:03:04.987 回答