如何查找TFS源代码管理树中某个点以下的所有更改

Ral*_*ton 5 tfs

我需要知道在源代码管理树中特定级别发生了哪些更改(如果有).有没有办法对TFS进行这样的查询?

bre*_*ers 11

使用Team Explorer:

  1. 开源控制资源管理器
  2. 导航到所需的源控制文件夹
  3. 右键单击并选择"查看历史记录"

显示树中或下方已在该级别签入的所有更改集.


使用tf实用程序:

tf history c:\localFolder -r -format:detailed

以下是tf历史文档的链接,以获取有关用法的更多详细信息:链接


使用TFS SDK以编程方式执行此操作:

这是基于我们的一些代码的示例方法.它需要路径,开始时间和结束时间,并在两个指定时间之间为您提供该路径下的所有变更集详细信息:

private StringBuilder GetTfsModifications(string tfsPath, DateTime startTime, DateTime endTime)
{
    StringBuilder bodyContent = new StringBuilder();

    TeamFoundationServer tfs = new TeamFoundationServer("YourServerNameHere");
    VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

    // Get collection of changesets below the given path
    System.Collections.IEnumerable changesets = vcs.QueryHistory(
            tfsPath, 
            VersionSpec.Latest, 
            0, 
            RecursionType.Full, 
            null, 
            new DateVersionSpec(startTime), 
            new DateVersionSpec(endTime), 
            int.MaxValue, 
            true, 
            false);

    // Iterate through changesets and extract any data you want from them
    foreach (Changeset changeset in changesets)
    {
        StringBuilder changes = new StringBuilder();
        StringBuilder assocWorkItems = new StringBuilder();

        // Create a list of the associated work items for the ChangeSet
        foreach (WorkItem assocWorkItem in changeset.WorkItems)
        {
            assocWorkItems.Append(assocWorkItem.Id.ToString());
        }

        // Get details from each of the changes in the changeset
        foreach (Change change in changeset.Changes)
        {
            changes.AppendLine(string.Format(CultureInfo.InvariantCulture, "\t{0}\t{1}", 
                    PendingChange.GetLocalizedStringForChangeType(change.ChangeType), 
                    change.Item.ServerItem));
        }

        // Get some details from the changeset and append the individual change details below it
        if (changes.Length > 0)
        {
            bodyContent.AppendLine(string.Format(CultureInfo.InvariantCulture, "{0}\t{1}\t{2}\t{3}\t{4}", 
                    changeset.ChangesetId, 
                    changeset.Committer.Substring(changeset.Committer.IndexOf('\\') + 1), 
                    changeset.CreationDate, 
                    changeset.Comment, 
                    assocWorkItems.ToString()));
            bodyContent.Append(changes.ToString());
        }
    }

    return bodyContent;
}
Run Code Online (Sandbox Code Playgroud)