-->

以编程方式删除TFS分支(Programmatically delete a TFS branch)

2019-10-17 16:46发布

我希望以编程方式删除TFS一个分支,是自动创建。

有一个现有的方法“ICommonStructureService.DeleteBranches”应该做的工作。 我的问题是,该方法需要一个参数“的String [] nodeUris”指定分支删除使用“vstfs:// ...” URI,我只是不知道如何获取我的分支。

我需要的是这样的:

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri <myCollectionUrl>));
var cssService = projectCollection.GetService<ICommonStructureService3>();
var project = cssService.GetProjectFromName(<myProjectName>);

但如何才能使我从那里得到了科乌里?

Answer 1:

同时,我找到了解决办法。 对于删除分支我使用

versionControl.Destroy(new ItemSpec(myBranchPath, RecursionType.Full), VersionSpec.Latest,  null, DestroyFlags.KeepHistory);

这不正是我需要的。 版本控制是类型VersionControlServer的,必须使用团队集合初始化



Answer 2:

删除版本控制的一个分支就像删除任何其他版本控制项目。 您需要挂起了删除Workspace.PendDeleteItem

在您的参考方法是完全无关的版本控制,这是TFS的一部分, 共同构成服务 ,它控制“ 区域和迭代 ”是TFS工作项可以分配给。

总之,有没有办法来对抗共同的结构业务进行任何形式的版本控制操作。 您可以通过创建一个删除一个分支Workspace针对VersionControlServer ,以待删除,然后待更改检查。



Answer 3:

我同意爱德华·汤姆森有关使用destroy命令。 所以我也跟着上建议由他和下面上来,

public void DeleteBranch(string path)
{
    var vcs = GetVersionControlServer();
    var itemSpec = new ItemSpec(path, RecursionType.Full);
    var itemSpecs = new[] {itemSpec};
    var workSpace = GetOrCreateWorkSpace(vcs);
    try
    {
        workSpace.Map(path, @"c:\Temp\tfs");
        var request = new GetRequest(itemSpec, VersionSpec.Latest);
        workSpace.Get(request, GetOptions.GetAll | GetOptions.Overwrite);
        workSpace.PendDelete(path, RecursionType.Full);
        var pendingchanges = workSpace.GetPendingChanges(itemSpecs);
        workSpace.CheckIn(pendingchanges, "Deleting The Branch");
    }
    finally
    {
        if (workSpace != null)
        {
            workSpace.Delete();
        }
    }
}

如果有一个整洁的方式做同样的比我期待着它。 这是因为它的东西太多了有点慢,

  • 创建临时工作区
  • 获取所有更改到
  • 执行删除到所有改动
  • 检查它
  • 清理工作区


文章来源: Programmatically delete a TFS branch