使用TeamFoundationClient TFS2008和VS2010进行程序化合并

3

我有一个针对VS 2010的Addin(未来可能是VSIX)。

我想对任何单个文件(sql文件)进行分支,然后通过编程进行合并。

我看到了几个选项:

GetStatus status = workspace.Merge

如何以编程方式合并 TFS 变更集?

TFS API 第 19 部分 - 合并

MergeContent(Conflict, true);

workspace.Merge能够显示合并的对话框(我认为是diffmerge.exe),并显示结果(解决冲突)吗?注意:在我的情况下,我想显示合并工具。

TFS API MergeContent返回false而不显示合并工具

有tf命令(命令行,不是C##)

tf diff[erence] itemspec [/version:versionspec]

tf merge [/recursive] [/force] [/candidate] [/discard] [/version:versionspec] [/lock:none|checkin|checkout] [/preview] [/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

tf resolve [itemspec]

[/auto:(AutoMerge|TakeTheirs|KeepYours| OverwriteLocal|DeleteConflict |KeepYoursRenameTheirs)]

[/preview] [(/overridetype:overridetype | /converttotype:converttype] [/recursive]

[/newname:path] [/noprompt]

[/login:username, [password]]

有没有关于如何合并文件的建议,并且有两个选项:

1)显示用于合并的对话框(diffmerge)

2)自动,不显示用于合并的对话框(diffmerge或其他工具?)和解决冲突。

1个回答

0

将 vsDiffMerge.exe 从 Visual Studio 安装目录 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE 复制到 App Exe 文件中

var mergetool = new ThirdPartyToolDefinition(".*",ToolOperations.Merge,"vsDiffMerge.exe","","/m %1 %2 %3 %4");
var toolcol= ThirdPartyToolDefinitionCollection.Instance.FindTool(".*",ToolOperations.Merge);
if (toolcol == null)
   {
   ThirdPartyToolDefinitionCollection.Instance.AddTool(mergetool);
   ThirdPartyToolDefinitionCollection.Instance.PersistAllToRegistry();
   }

var controlsAssembly = Assembly.GetAssembly(typeof(ControlAddItemsExclude));
var vcResolveCoinflictsDialogType = controlsAssembly.GetType("Microsoft.TeamFoundation.VersionControl.Controls.DialogResolveConflicts");
var ci = vcResolveCoinflictsDialogType.GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, new[] { typeof(Workspace), typeof(string[]), typeof(bool) }, null);
var resolveCoinflictsDialog = (Form)ci.Invoke(new object[] { workspace, null, true });
resolveCoinflictsDialog.ShowDialog(parent);

ThirdPartyToolDefinitionCollection.Instance.Remove(mergetool);
ThirdPartyToolDefinitionCollection.Instance.PersistAllToRegistry();

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