TFS冲突类型:可写文件 - 本地存在同名的可写文件

dev*_*per 27 version-control tfs visual-studio-2010

我正在尝试获取最新的项目.当我这样做时,TFS告诉我,该项目中的每个文件都存在冲突.每个文件都有相同的冲突:Conflict Type: Writable File - A writable file by same name exists locally.

它给我的分辨率是"覆盖本地文件或文件夹",但我必须逐一完成.

为什么TFS认为我有冲突(我没有更改任何文件)?

Gra*_*day 30

Visual Studio 2010冲突解决对话框支持多选.

如果选择第一个冲突,请按住Shift然后选择最后一个冲突,"覆盖本地文件或文件夹"分辨率将应用于所有选定的冲突.

您还可以使用命令行工具tf resolve/auto:OverwriteLocal来解决冲突.

  • Ctrl-A(全选)也可以在VS2012中运行,速度更快一些 (4认同)

Edw*_*son 14

格兰特的答案非常适合如何解决多个冲突.

至于为什么会出现这些冲突,一般来说,您的TFS客户端检测到本地存在的文件不是由TFS管理的,但您正在尝试执行覆盖该文件的get操作.

如果您正在遵循正常的开发工作流程(而不是在编辑器之外编辑文件),则最常见的可写冲突来源是搁置集.如果您要在文件上添加一个添加项,那么您将撤消该添加(显式或因为您搁置了更改并取消选择保留挂起更改按钮),该文件不会被删除.(这是为了防止数据丢失 - 您希望创建文件但将其签入源代码控制的情况并不少见.)

现在,如果您(或其他人)要检查该搁置集(通过从搁置集创建构建,或通过门控登记,或者因为您的代码审查员直接在您的搁置集中检查),那么当您做到最新时,您的TFS客户端将检测到该文件仍然存在于本地,因此,您将有可写冲突.

在门控办理登机手续的情况下,这可能不是特别明显.门禁办理登机手续的实际工作方式是,当您尝试检查更改时,您的办理登机手续实际上已转换为搁置集.然后,TFS构建代理将尝试构建您的shelveset,如果构建成功,它将代表您签入该shelveset.如果构建失败,搁置集仍然存在,您可以取消修复构建错误.

因此,在您使用门控签到时运行构建通知应用程序非常重要,这样您就可以在提交更改后"协调"您的更改.协调您的签入将只是获取构建服务器提交的签入,但它将避免冲突,因为它了解本地磁盘上的更改的上下文.(它会将本地磁盘上的内容与服务器上的内容进行比较.)如果您不选择协调,遗憾的是,您将对添加的文件产生可写冲突.

(请注意,此方案不会在下一版本的TFS中产生冲突 - 如果没有内容差异,TFS不会产生冲突.)