TFS 2010: Как создать журнал изменений (т. Е. Список рабочих элементов) между двумя выпусками приложения с использованием меток?

Я ищу способ автоматического создания журнала изменений (фактически списка рабочих элементов) между двумя выпусками моего приложения. У меня есть две версии моего приложения, v1 и v2, каждая из которых помечена меткой в TFS 2010 (LABEL1 и LABEL2), которую я создал вручную перед сборкой настроек своего приложения. У меня есть система ветвления, что означает, что у меня есть транк, в котором большинство ошибок исправлено, и ветвь, в которой исправления применяются главным образом с использованием слияний из транка (но есть также некоторые исправления только для ветви, которые не касаются транка) , Две версии моего приложения (v1 и v2) являются версиями из ветви.

Мне бы хотелось, чтобы TFS 2010 могла возвращать список исправленных ошибок (т. Е. Список рабочих элементов с типом = Ошибка, которые закрыты и проверены) между этими двумя метками.

Я пытался добиться этого, используя веб-интерфейс TFS 2010 или Visual Studio, но не нашел никакого способа.

Затем я попытался запросить у tf.exe историю, используя следующую командную строку:

tf history /server:http://server_url/collection_name "$/project_path" /version:LLABEL1~LLABEL2 /recursive /noprompt /format:brief

где LABEL1 - метка, которая была связана с исходным кодом v1 приложения, а LABEL2 - метка, которая была связана с исходным кодом v2 приложения. Это на самом деле дает сбой двумя способами: - командная строка возвращает только список наборов изменений, а не список связанных закрытых рабочих элементов - список наборов изменений содержит только наборы изменений, которые я применил к самой ветви, а не наборы изменений, которые я также применил и ствол, а затем слились с веткой. Установка или нет параметра "/ slotmode" ничего не меняет.

Там я попытался написать кусок кода на C # для получения списка рабочих элементов (не списка наборов изменений):

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://server_url/collection_name"));

VersionControlServer controlServer = tfs.GetService<VersionControlServer>();
VersionControlServer vcs = tfs.GetService<VersionControlServer>();

VersionSpec sFrom = VersionSpec.ParseSingleSpec("LLABEL1", null);
VersionSpec sTo = VersionSpec.ParseSingleSpec("LLABEL2", null);

var changesets = vcs.QueryHistory(
    "$/project_path",
    sTo,
    0,
    RecursionType.Full,
    null,
    sFrom,
    sTo,
    int.MaxValue,
    true,
    false); // Slotmode to false

Dictionary<int, WorkItem> dico = new Dictionary<int, WorkItem>();
foreach (Changeset set in changesets)
{
    foreach (WorkItem zz in set.WorkItems)
    {
        if (!dico.ContainsKey(zz.Id))
        {
            dico.Add(zz.Id, zz);
        }
    }
}

foreach (KeyValuePair<int, WorkItem> pair in dico.OrderBy(z => z.Key))
{
    Console.WriteLine(string.Format("ID: {0}, Title: {1}", pair.Key, pair.Value.Title));
}

Это на самом деле работает, я получаю список рабочих элементов между двумя моими лейблами, что на самом деле то, что я хотел. Но учитываются только рабочие элементы, связанные с наборами изменений, которые были зафиксированы в самой ветви: рабочие элементы типа «Ошибка», которые были решены в стволе, а затем объединены с веткой, не отображаются. Слот-режим ничего не меняет.

Затем я наконец попытался заменить VersionSpecs, которые были определены меткой, на VersionSpecs, которые определены наборами изменений:

VersionSpec sFrom = VersionSpec.ParseSingleSpec("C5083", null);
VersionSpec sTo = VersionSpec.ParseSingleSpec("C5276", null);

И мой код наконец работает.

Итак, мой вопрос: как я могу получить тот же результат с метками, какие объекты TFS я использую для идентификации версии? Если это невозможно, как мне определить версию в TFS 2010? Спасибо.

Кстати, я нашел несколько вопросов по stackoverflow, но ни один из них не дал мне ответов с метками. Например:Пример вопроса

Ответы на вопрос(4)

Ваш ответ на вопрос