当使用TFS时,我如何手动解决冲突并将其标记为已解决?

6
来自SVN世界的这个问题很容易解决: 1)合并操作之后会出现冲突,SVN将在工作副本中显示有冲突的文件。 2)您可以以任何需要的方式解决它们(可以使用任何外部工具)。 3)使用“svn resolved”标记为已解决冲突。 4)提交更改(或继续处理等)。
现在使用TFS和Visual Studio(2010),我们似乎只有以下选项: - > TFS合并工具中进行合并(仅限文本文件)。 - > 对于非文本文件,可以接受源分支文件(覆盖目标分支文件)或保留目标分支文件(忽略源分支文件)。
我需要能够使用外部工具(例如Erwin)解决某些文件类型的冲突,然后标记为已解决。
我尝试了解决冲突,将新文件放入目标分支文件系统工作区(即工作副本),并使用“tf resolve /auto:DeleteConflict”。但是这并没有帮助。最终检入合并时完全忽略了本地已解决/合并的文件。
TFS/VS肯定可以做到这一点!
非常感谢任何帮助!
谢谢。

作为tbergstedt答案的补充,这篇博客全面介绍了如何从TFS调用第三方合并工具。如果您可以从命令行调用ERwin,则可以从TFS调用它。 - James Reed
谢谢你提供的线索,但遗憾的是ERwin似乎不支持任何命令行参数。我需要使用的另一个工具也肯定不支持。还有其他想法吗? - Mark Matten
2个回答

3
您可以在Visual Studio中为比较和合并设置具体规则。它位于工具->选项->源代码控制->Visual Studio团队基础架构下。选择配置用户工具...,从那里您可以选择任何外部工具用于操作。

您可以使用文件过滤器来定义任意数量的规则,并在此处添加任何自定义工具以供"合并"操作使用:
**输入图像描述**

我尝试设置的第一个工具(ERwin)无法使用。我确定我还需要使用的另一个工具也无法使用这种机制。 - Mark Matten
在SVN中是否有手动解决冲突的方法,或者唯一的解决冲突的方式是通过合并冲突解决对话框(或稍后的“恢复冲突解决”)来解决?! - Mark Matten
ERwin不接受命令行参数!还有其他方法可以让它工作吗? - Mark Matten
在这种情况下,我可以看到两个选择:1)如果ERwin有某种API,您可以构建自己的接口用于合并。2)更手动的方法是执行合并,在解决冲突阶段暂停,在ERwin中解决必要的冲突并覆盖目标,在VS中使用“采取目标版本”解决每个(ERwin)冲突。您可以在检查任何内容之前检查结果。有点麻烦,但您不能责怪TFS无法处理仅接受GUI界面的程序... - Torbjörn Bergstedt
我肯定已经尝试过“获取目标版本”,但它忽略了我放在目标分支本地工作区的文件,只接受了服务器版本!这只剩下下面答案中的“/auto:AcceptMerge”选项(我还没有尝试)。如果在TFS/VS2010中不再有效,则我就完了。实际上,我可以完全归咎于TFS!文本,文本,文本。没有文本怎么办?他们读过SVN手册吗?;p - Mark Matten

1

一旦您手动使用合并工具将所需内容保存到磁盘上,而不是运行“tf resolve /auto:DeleteConflict”,请运行“tf resolve /auto:AcceptMerge”。这会告诉TFS接受磁盘上的内容作为合并的解决方案。


真的吗?我看过的文档中没有记录这个。你在哪里找到的?我会试一下。 - Mark Matten
实际上,它列在 MSDN 的 Visual Studio 2005 页面上,但不在2010页面上。我正在使用2010。如果这有效,我会告诉你的。 - Mark Matten
好的,现在已经尝试了这个("/auto:AcceptMerge")。但是它没有起作用!以下是错误信息:二进制文件无法合并,除非指定编码覆盖。然后是有关源和目标都有更改的消息。即冲突(!!)。有什么想法吗?! - Mark Matten
还尝试将“.erwin”添加到可在项目集级别合并的文件类型列表中。这也没有帮助。 - Mark Matten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接