TFS 2010 - 合并变更集

时间:2012-01-19 08:33:45

标签: tfs tfs2010 tfsbuild tfs2008

在TFS 2010中,方案是通过tf命令行合并选定的变更集。 假设有20个变更集要从分支到主文件夹合并。我使用tf命令行来合并所有20个变更集。 如果任何变更集中存在冲突,则应向签入变更集的人员触发电子邮件。 无论如何都要向签入变更集的人发送电子邮件?

1 个答案:

答案 0 :(得分:1)

我认为你唯一的办法就是编写一个应用程序,将sourceBranch和targetBranch&作为输入。将尝试以编程方式将最新的一个合并到另一个。然后它将查询冲突,找到它们所属的变更集,最后将电子邮件发送给变更集所有者。

以下基于Eugene Zakhareyev的工作发现here

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace DetectConflicts
{
    class Program
    {
        static void Main()
        {
            TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFS:8080/tfs/{Collection}"));
            var versionControl = teamProjectCollection.GetService<VersionControlServer>();

            const string sourceBranch = "$/PathToFROMBranch";
            const string targetBranch = "$/PathToTOBranch";

            Workspace myWorkspace = versionControl.GetWorkspace("WorkspaceName", "{DOMAIN}\\YourName");
            GetStatus getStatus = myWorkspace.Merge(sourceBranch,
                        targetBranch,
                        null,
                        null,
                        LockLevel.None,
                        RecursionType.Full,
                        MergeOptions.None);

            Conflict[] conflicts = myWorkspace.QueryConflicts(new[] {targetBranch}, true);
            foreach (var conflict in conflicts)
            {
                string owner = versionControl.GetChangeset(conflict.TheirVersion).Owner;
                //
                //send an email to "owner"
                //
                ...
            }
        }
    }
}