Tfs / AzureDevOps客户端库在AzureDevOps分支上合并冲突解决方案

问题描述 投票:1回答:1

[我已经写了一些c#代码,旨在自动在相关tfvc分支之间进行AzureDevOps合并,从而尝试使它们保持同步(不执行无基础的合并)。

这是依靠Microsoft.TeamFoundationServer.ExtendedClientMicrosoft.TeamFoundationServer.Client NuGet程序包中的客户端库来实现的。

该代码在Microsoft.TeamFoundation.VersionControl.Client中的Workspace类上使用“合并”方法:

GetStatus status = workspace.Merge(sourceBranch,
                               destinationBranch,
                               vsFromChangeset,
                               vsToChangeset,
                               LockLevel.None,
                               RecursionType.Full,
                               MergeOptions.None); 

int numberOfConflicts = status.NumConflicts;

合并完成后,我检查“ GetStatus”对象上NumConflicts字段的状态,以确定是否发生了合并冲突。如果确实如此,我将停止该过程,并且需要手动解决此特定的合并-即在Visual Studio中合并(我使用VS2017 Prof)。这并不是什么大问题,因为从自动合并确实成功的时代获得的生产力就足够了。

我无法解释的奥秘是:

在大多数情况下,当客户端库合并表示合并冲突,然后通过Visual Studio完成合并时,Visual Studio会进行合并,而不会提及合并冲突。没什么问题。

几乎似乎在Visual Studio中还有一个更高级别的“合并冲突解决逻辑”,使它能够执行比客户端库更高级的合并冲突解决类型?但是我可能离这里很远😊

就是说,MergeOptions枚举的用法(如here所述),对我来说并不完全清楚,所以也许这是引起头痛的原因。任何详细阐述该主题的资料都将不胜感激。 MergeOptions当前设置为none,并且在大多数情况下适用。

关于导致这种行为的任何想法?谢谢!

c# tfs azure-devops tfvc tfs-sdk
1个回答
0
投票

通过更改Microsoft.TeamFoundation.VersionControl.Client.Workspace类的Merge方法中使用的mergeOptions参数,解决了此问题。

使用枚举Microsoft.TeamFoundation.VersionControl.Common.MergeOptionsEx上的合并选项代替 Microsoft.TeamFoundation.VersionControl.Client.MergeOptions的问题为我解决了这个问题。

我现在已经看到80多个自动合并可以完美地工作,并且不再有以前的不稳定行为。 merge命令应如下所示:

GetStatus status = workspace.Merge(sourceBranch,
                           destinationBranch,
                           vsFromChangeset,
                           vsToChangeset,
                           LockLevel.None,
                           RecursionType.Full,
                           MergeOptionsEx.None); 

因此,我的问题的答案是在无名英雄马里乌斯·斯考齐拉斯(Mariusz Skoczylas)的social.msdn post底部找到的。非常感谢!

关于MergeOptionsEx的官方文档可以找到here

© www.soinside.com 2019 - 2024. All rights reserved.