TFS 2010 - объединить наборы изменений - PullRequest
1 голос
/ 19 января 2012

В TFS 2010 сценарий заключается в объединении выбранных наборов изменений через командную строку tf.Предположим, что было 20 наборов изменений, которые нужно объединить из ветви в основную папку.Я использую командную строку tf для объединения всех 20 наборов изменений.Если в любом из наборов изменений есть конфликт, электронная почта должна быть отправлена ​​человеку, который зарегистрировал наборы изменений.Можно ли в любом случае отправить электронное письмо тому, кто проверяет изменения?

1 Ответ

1 голос
/ 19 января 2012

Я думаю, что единственным выходом для вас является написание приложения, которое будет принимать в качестве входных данных sourceBranch и targetBranch и будет пытаться программно объединить последние из одного с другим. Затем он запросит конфликты, найдет набор изменений, к которому они относятся, и, наконец, отправит электронное письмо владельцу набора изменений.

Следующие базы в значительной степени основаны на работах Евгения Захареева, найденных здесь :

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"
                //
                ...
            }
        }
    }
}
...