список всего содержания папки в tfs

Учитывая конкретный путь папки в tfs, я должен рекурсивно найти все файлы и папки в папке для данного changeset. Другими словами, я должен получить переходное закрытие пути в tfs для данного changeset. Проблема, с которой я сталкиваюсь при этом, перечисляет содержание конкретной папки в tfs.. Как это было бы возможно в C#?

5
задан Sidd 13 July 2010 в 18:44
поделиться

4 ответа

Я предполагаю, что вам нужно «содержимое папки из набора изменений X», а не «содержимое папки, которое было частью набора изменений X»

GetItems - правильный вызов для использования, просто передайте спецификацию версии для интересующего вас набора изменений.

http://msdn.microsoft.com/en-US/library/bb138911.aspx

так что, если у вас уже есть ссылка на экземпляр VersionControlServer:

var myFolderAtChangeset17 = versionControlServer.GetItems("$/MyFolder", new ChangesetVersionSpec(17), RecursionType.Full);

Если я неправильно понял, и вы захотите «содержимое папки, которое было частью набора изменений X», есть несколько разных способов сделать это, но получить набор изменений с помощью GetChangeset и просто отфильтровать Изменения довольно просто.

7
ответ дан 14 December 2019 в 04:29
поделиться

Что-то вроде этого может быть больше тем, что вы ищете. Это получает все изменения в наборе изменений и итерирует их, определяя те, которые находятся по заданному пути. Это можно сократить с помощью linq-запроса, но я оставляю это в более развернутом виде, чтобы передать суть того, что я пытаюсь сказать:

    TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080");
    VersionControlServer vcs = tfs.GetService<VersionControlServer>();

    Changeset cs = vcs.GetChangeset(6284868);

    foreach (Change change in cs.Changes)
    {
        if (change.Item.ServerItem.StartsWith("$/Application Common/Dev/src"))
        {
            System.Diagnostics.Debug.WriteLine(string.Format("Changeset {0}, file {1}, changes {2}",
                cs.ChangesetId, change.Item.ServerItem, change.ChangeType.ToString()));
        }
    }
2
ответ дан 14 December 2019 в 04:29
поделиться

Думаю, что-то вроде этого сработает ..


    TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080");   
    VersionControlServer vcs = tfs.GetService();   
    ItemSet items;

    items = vcs.GetItems(tfsPath, RecursionType.Full);

Если у вас есть другие идеи, опубликуйте их ..

0
ответ дан 14 December 2019 в 04:29
поделиться

Вы можете использовать веб-службу набора изменений, чтобы получить XML-документ, содержащий все измененные элементы для определенного набора изменений. Затем просто прокрутите список измененных элементов и посмотрите, находятся ли они на том пути, который вы ищете.

Вот URL-адрес веб-службы набора изменений:

http: // your_tfs_server /VersionControl/Changeset.aspx?artifactMoniker= your_changeset_number & webView = true

-1
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: