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

时间:2012-02-13 14:14:07

标签: visual-studio-2010 version-control tfs

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

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

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

4 个答案:

答案 0 :(得分:27)

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

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

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

答案 1 :(得分:14)

格兰特的回答非常适合解决多个冲突。

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

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

现在,如果您(或其他人)要检查该搁置集(通过从该搁置集创建构建,或通过门控签入,或者因为您的代码审阅者直接在您的搁置集中检查),那么当您执行此操作时最新版本,您的TFS客户端将检测到该文件仍然存在于本地,因此,您将发生可写冲突。

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

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

(请注意,此方案will not produce a conflict in the next version of TFS - 如果没有内容差异,TFS不会产生冲突。)

答案 2 :(得分:0)

您必须拥有特定本地文件或文件夹的所有权限(完全控制权)。看看这个。如果不是这样,您必须删除所有本地文件,更改权限,然后从服务器获取最新文件。

答案 3 :(得分:0)

您可以对存在冲突文件的整个文件夹,多个文件夹或整个项目执行此操作。

enter image description here

您需要右键单击该特定文件/文件夹,转到“高级”,选择“获取特定版本...”

enter image description here