我希望以编程方式删除TFS一个分支,是自动创建。
有一个现有的方法“ICommonStructureService.DeleteBranches”应该做的工作。 我的问题是,该方法需要一个参数“的String [] nodeUris”指定分支删除使用“vstfs:// ...” URI,我只是不知道如何获取我的分支。
我需要的是这样的:
var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri <myCollectionUrl>));
var cssService = projectCollection.GetService<ICommonStructureService3>();
var project = cssService.GetProjectFromName(<myProjectName>);
但如何才能使我从那里得到了科乌里?
同时,我找到了解决办法。 对于删除分支我使用
versionControl.Destroy(new ItemSpec(myBranchPath, RecursionType.Full), VersionSpec.Latest, null, DestroyFlags.KeepHistory);
这不正是我需要的。 版本控制是类型VersionControlServer的,必须使用团队集合初始化
删除版本控制的一个分支就像删除任何其他版本控制项目。 您需要挂起了删除Workspace.PendDelete
的Item
。
在您的参考方法是完全无关的版本控制,这是TFS的一部分, 共同构成服务 ,它控制“ 区域和迭代 ”是TFS工作项可以分配给。
总之,有没有办法来对抗共同的结构业务进行任何形式的版本控制操作。 您可以通过创建一个删除一个分支Workspace
针对VersionControlServer
,以待删除,然后待更改检查。
我同意爱德华·汤姆森有关使用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();
}
}
}
如果有一个整洁的方式做同样的比我期待着它。 这是因为它的东西太多了有点慢,
- 创建临时工作区
- 获取所有更改到
- 执行删除到所有改动
- 检查它
- 清理工作区