Получить конкретную версию TFS API

Я написал несколько кодов для получения последней версии выбранного проекта. Когда я запускаю его, он работает. Но если я удалю папку и снова запущу ее, она говорит: «Все файлы обновлены».

Я решил эту проблему с помощью системы управления исходным кодом Visual Studio TFS и получения конкретной версии. Как я могу реализовать в проекте С# с помощью TFS API?

Мой код:

WorkingFolder workfolder = new WorkingFolder(ServerFolder, LocalFolder);
workspace.CreateMapping(workfolder);

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite);

Изменить:

Я добавляю этот код и проверяю возвращаемое значение "getStatus"

GetStatus getStatus = workspace.Get(VersionSpec.Latest,  GetOptions.Overwrite);
if (getStatus.NoActionNeeded)
// create new workspace and use same codes in "My code"

person mozkarakoc    schedule 13.09.2012    source источник


Ответы (3)


Если вы используете локальную рабочую область в 2012 году, проблема с тем, что GetLatest не загружает файлы, которые вы удалили, не будет проблемой. Однако в рабочей области «сервер» TFS знает только об изменениях на вашем локальном диске, о которых вы сообщили TFS. В этом случае, поскольку сервер TFS не знает об удаленных вами файлах, он не будет знать, что они отсутствуют, и не будет их повторно загружать.

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

person Taylor Lafrinere    schedule 13.09.2012
comment
Спасибо Тейлор, ваше объяснение было очень информативным. Я решил проблему, используя класс GetStatus. После вызова метода workspace.Get() я проверяю возвращаемое значение, и если значение равно NoActionNeeded, я получаю все. Еще раз спасибо. - person mozkarakoc; 14.09.2012

Я не собирался пробовать это, но можете ли вы объединить GetOptions.Overwrite с GetOptions.GetAll?

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite | GetOptions.GetAll)

В командной строке я бы использовал параметр /force для команды tf get. Я думаю, что флаг GetOptions.GetAll может быть эквивалентен параметру /force.

person Dan Shield    schedule 13.09.2012
comment
Спасибо, я попробовал. Я добавляю GetOptions.GetAll в свой код, и когда я нажимаю кнопку «Получить последнюю версию», программа загружает весь проект в мою рабочую область. Я хочу получить только выбранный проект в дереве. - person mozkarakoc; 14.09.2012

Вы можете выполнить эти шаги - на основе класса VersionControlServer

Ссылка: http://msdn.microsoft.com/fr-fr/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver.aspx

Ссылка: http://msdn.microsoft.com/fr-fr/library/bb138927.aspx

Примечание: добавьте ссылку на

Microsoft.TeamFoundation.VersionControl.Client.dll 

Microsoft.TeamFoundation.Client.dll
person Aghilas Yakoub    schedule 13.09.2012