Как заполнено поле Change.MergeSources в TFS? - PullRequest
3 голосов
/ 22 сентября 2010

Мы бы хотели сгенерировать заметки о сборке в следующем формате:

1) Associated ChangeSets:
2)   - ChangeSet 45241, by Joe: "Patching fix for foobar"
3)     'Foo.cs' integrated from dev v. 22 to qa v. 7
4)     'Bar.cs' integrated from dev v. 9 to qa v. 3

Пока у нас есть специальный шаг сборки, который выполняет 1) и 2).Он просматривает информацию, полученную в процессе сборки TFS 'AssociatedChangesetsAndWorkItems'.Вот код:

protected override bool Execute(CodeActivityContext context)
{
     StreamWriter sw = new StreamWriter(Path.Combine(BuildNotesPath.Get(context),"build-notes.txt"));
     sw.WriteLine("Associated ChangSets:");
     foreach (Changeset changeset in BuildAssociatedChangesets.Get(context))
     {
        sw.WriteLine(string.Format("ChangeSet {0}, by {1}: {2}", changeset.ChangesetId, changeset.Committer, changeset.Comment));            
        foreach (Change change in changeset.Changes)
        {               
           foreach (MergeSource source in change.MergeSources)
              sw.WriteLine(string.Format("\'t{0}': integrated from dev v. {1} to qa v. {2}", source.ServerItem, source.VersionFrom, source.VersionTo));
        }
     }
     sw.Flush();
     sw.Dispose();
     return true;  
}

Проблема, с которой мы сталкиваемся, состоит в том, что поле 'MergeSources' всегда представляет собой пустой список.Что мы должны сделать, чтобы заполнить это поле?

1 Ответ

1 голос
/ 30 июня 2011

Посмотрите на MergeWorkItemsEventHandler.MergeWorkItems и .GetMergeHistory вместе с Extensions.PendingMerges в обработчике событий слияния рабочих элементов TFS 2010 * для примера получения источников слияния.

Jakob Enh заслуживает кредита за этот ответ.:)

...