Как определить автора блока кода программно в TFS? - PullRequest
2 голосов
/ 28 июня 2011

Мы работаем с Team Foundation Server (Visual Studio 2010).

Как программно получить средство записи конкретного блока кода?

Ответы [ 3 ]

0 голосов
/ 28 июня 2011

С помощью TFS API вы можете получить доступ к этим данным.Каждая ревизия имеет коммитера.Я бы взял предложенный код здесь .Из этого вы можете добавить:

foreach (var change in cs.Changes)
{
    if (change.Item.ServerItem != serverItem)
    {
        return;
    }
    //Get commiter
    cs.Committer

Хотя это не дает вам 100% пути, это как минимум отправная точка.

0 голосов
/ 28 июня 2011

Довольно просто.

У меня есть рабочая демоверсия в моем блоге => http://geekswithblogs.net/TarunArora/archive/2011/06/26/tfs-2010-sdk-smart-merge-programmatically-create-your-own-merge.aspx

Отредактированный

Мне очень жаль, что я неправильно понял ваш вопрос. То, что вы ищете, - это возможность получить changesetId на основе определенного пути к файлу в TFS, а затем возможность видеть измененные элементы для этого набора изменений, а затем возможность видеть модификацию в исходном коде и знать, кто автор этого изменения источника Правильно?

Если это так, не могли бы вы сделать следующее,

public static void GetMergeDetailsForChangeSet()
    {
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("Enter the url of team project"));
        var versionControl = tfs.GetService<VersionControlServer>();

        var a = versionControl.GetChangeset(12322);

        VersionSpec changeSpec = new ChangesetVersionSpec(a.Changes[0].Item.ChangesetId);

        var changeSetDetails = a.Changes[0].Item.VersionControlServer.QueryMergesWithDetails(
            null,
            null,
            0,
            a.Changes[0].Item.ServerItem,
            changeSpec,
            a.Changes[0].Item.DeletionId,
            changeSpec,
            changeSpec,
            RecursionType.Full);

    }
  1. В моем блоге показано, как программно получать наборы изменений из TFS
  2. Теперь, когда у вас есть набор изменений, вы можете получить измененный файл.
  3. В приведенном выше примере я получаю детали слияния из этой ревизии. В вашем случае вам придется использовать GetItems (String, VersionSpec, RecursionType, DeletedState, ItemType, Boolean)
  4. У объекта changeset есть свойство 'Owner', которое сообщит вам, кто является автором изменения.
  5. Теперь, если вы хотите выбрать сведения о первом наборе изменений в этом списке, вам нужно получить доступ к Item.VersionControlServer, см. Подробности здесь http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.item.versioncontrolserver.aspx

Помогает ли это, могу ли я предоставить дополнительную информацию?

НТН.

Приветствия, Тарун

0 голосов
/ 28 июня 2011

MSDN имеет параметр Annotate для отслеживания такой информации, но по умолчанию это операции на уровне файлов и регистрации. Для такой информации мы обычно используем комментарии к коду, это может быть не так профессионально, но это хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...