我想以编程方式删除TFS中自动创建的分支。
现有的方法“ICommonStructureService.DeleteBranches”应该完成这项工作。 我的问题是该方法需要一个参数“string [] nodeUris”,它使用“vstfs:// ...”URI指定要删除的分支,我只是不知道如何为我的分支获取该分支。
我需要的是:
var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri <myCollectionUrl>));
var cssService = projectCollection.GetService<ICommonStructureService3>();
var project = cssService.GetProjectFromName(<myProjectName>);
但我如何从那里获得Branch Uri?
答案 0 :(得分:1)
同时我找到了解决方案。删除我正在使用的分支
versionControl.Destroy(new ItemSpec(myBranchPath, RecursionType.Full), VersionSpec.Latest, null, DestroyFlags.KeepHistory);
这正是我所需要的。 versionControl的类型为VersionControlServer,必须使用Team Collection
进行初始化答案 1 :(得分:0)
在版本控制中删除分支就像删除任何其他版本控制项一样。您需要在Item
上使用Workspace.PendDelete
删除删除。
method you reference与版本控制完全无关,它是TFS common structure service的一部分,它控制着可以分配TFS工作项的“areas and iterations”。
简而言之,没有办法对公共结构服务执行任何类型的版本控制操作。您可以通过针对Workspace
创建VersionControlServer
,等待删除,然后检入待处理的更改来删除分支。
答案 2 :(得分:0)
我同意Edward Thomson关于使用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();
}
}
}
如果有一种巧妙的方式来做同样的事情,那么我期待着它。这有点慢,因为它做了太多事情,