在TFS中给定一个文件夹路径,我需要递归查找该文件夹内所有文件和文件夹,以获取给定变更集的传递闭包。换句话说,我需要在TFS中为给定的变更集获取路径的传递闭包。我遇到的问题是如何列出TFS中特定文件夹的内容。
在C#中如何实现这一点?
var myFolderAtChangeset17 = versionControlServer.GetItems("$/MyFolder", new ChangesetVersionSpec(17), RecursionType.Full);
也许这更符合你的需求。它获取变更集中的所有更改并遍历它们,识别给定路径中的更改。这可以使用Linq查询缩短,但我将其略微扩展以传达我的意思:
TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080");
VersionControlServer vcs = tfs.GetService<VersionControlServer>();
Changeset cs = vcs.GetChangeset(6284868);
foreach (Change change in cs.Changes)
{
if (change.Item.ServerItem.StartsWith("$/Application Common/Dev/src"))
{
System.Diagnostics.Debug.WriteLine(string.Format("Changeset {0}, file {1}, changes {2}",
cs.ChangesetId, change.Item.ServerItem, change.ChangeType.ToString()));
}
}
我认为这样做可能会有效...
TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080");
VersionControlServer vcs = tfs.GetService();
ItemSet items;
items = vcs.GetItems(tfsPath, RecursionType.Full);
您可以使用变更集 Web 服务获取包含特定变更集的所有更改项的 XML 文档。然后只需循环遍历更改项列表并查看它们是否在您要查找的路径中。
以下是变更集 Web 服务的 URL:
http://your_tfs_server
/VersionControl/Changeset.aspx?artifactMoniker=your_changeset_number
&webView=true