签入变更集以编程方式合并

我正在检索与 WorkItem 相关的 tfvc 变更集。我的下一步是我想检查它们是否合并到特定分支。我没有找到任何关于如何在 c# 中执行此操作的信息。


今天我所拥有的是:


using (var changeSetClient =

                new TfvcHttpClient(_uri, _credentials))

            {


                foreach (var relation in wi.Relations.Where(r => r.Url.Contains("Changeset")))

                {

                    var changeset = changeSetClient.GetChangesetAsync("Welfare_Research_2009", relation.Attributes["id"]).Result;

                    changeset.


                }

            }

            return null;

}

我还可以获得正确的 TfvcBranch,我想知道它是否合并到。


但是我如何检查它是否已合并?很像 Visual Studio 中的“跟踪变更集”功能。


catspeake
浏览 153回答 2
2回答

湖上湖

根据你的描述,VersionControlServer.TrackMerges()就是你要使用的API。TrackMerges(array<Int32[],&nbsp;ItemIdentifier,&nbsp;array<ItemIdentifier[],&nbsp;ItemSpec)获取从源项到一组目标项的合并,以获取源变更集 ID 列表。在 sourceItem 参数中,传递要跟踪更改的分支的根。在 targetItems 参数中,传递要将变更集跟踪到的分支的根。请注意,这仅适用于具有合并关系的分支根。确保这一点的最佳方法是查看分支层次结构并使分支直接相关或通过某些路由相关。假设您想在这样的分支层次结构中跟踪从 $/Proj/Main 到 $/Proj/Feature2 的变更集:$/Proj/Main &nbsp;&nbsp;&nbsp;&nbsp;$/Proj/Dev &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$/Proj/Feature2然后,您希望将 $/Proj/Main 作为您的 sourceItem 和 $/Proj/Dev 和 $/Proj/Feature2 作为 targetItems 传递。更多详细代码和示例请参考此博客:TFS API - TRACK CHANGESET MERGE IN BRANCHES

RISEBY

可能有更有效的方法来做到这一点,但您可以使用以下内容查询相应分支的历史记录:// pseudo codevar parameter = new QueryHistoryParameters();parameter.RecursionType = RecursionType.Full;parameter.IncludeChanges = true;// set other members to potentially filter out unneeded stuff// especially, say, "VersionStart" / "VersionEnd".var result = workspace.VersionControlServer.QueryHistory(parameter);foreach (var entry in result){&nbsp; &nbsp; &nbsp;// Compare "entry.ChangesetId" with the ID of the changeset you're looking for.}请注意,可以通过不同方式收集对 VersionControlServer 接口的引用。上面我假设您已经有了工作区参考。
打开App,查看更多内容
随时随地看视频慕课网APP