Контроль версий файлов в TFS
Подсистема контроля версий файлов в TFS позволяет работать из командной строки.
Находится эта утилита по умолчанию в C:\Program Files\Microsoft Visual Studio 8\Common7\IDE , имя файла tf.exe
Примеры:
- Создание клиентской рабочей области, set mappings
- tf workspace /template:WorkspaceName;username WS1 /s:https://servername:8080
- Конфигурация diff средства
tf diff /configure - Получение файлов
- tf get
- Открытие файла на редактирование
tf edit foo.cs - Check in
tf checkin - Бэкап работы в шелв
tf shelve /i MyWork - Бэкап в шелв с возвратом к исходному состоянию
tf shelve /i MyWork /move - Удаленный код ревью шелва
tf unshelve CoolStuff;buckh
Вся документация по tf.exe находится на MSDN https://msdn2.microsoft.com/en-us/library/cc31bk2e(VS.80).aspx
Некоторые моменты о конфигурации diff –
1) Она доступна не только из командной строки но и через интерфейс VS via tools -> options -> source control -> visual studio team foundation server
2) Параметры передаются уже заключенные в кавычки
Вот настройки для наиболее распространенных систем:
Diff тулы:
Продукт |
Команда |
Аргументы |
TFS default |
diffmerge.exe |
%1 %2 %6 %7 %5 /ignorespace |
windiff.exe |
%1 %2 |
|
DiffDoc.exe |
/M%1 /S%2 |
|
winmerge.exe |
/ub /dl %6 /dr %7 %1 %2 |
|
bc2.exe |
%1 %2 /title1=%6 /title2=%7 |
|
kdiff3.exe |
%1 --fname %6 %2 --fname %7 |
|
compare.exe |
/wait /2 /title1:%6 /title2:%7 %1 %2 |
|
Wincmp3.exe |
%1 /=%6 %2 /=%7 |
|
DiffMerge.exe |
/title1=%6 /title2=%7 %1 %2 |
Merge тулы:
Продукт |
Команда |
Аргументы |
TFS default |
diffmerge.exe |
/merge %1 %2 %3 %4 %6 %7 |
kdiff3.exe |
%3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4 |
|
ssexp.exe |
/merge %1 %2 %3 %4 %6 %7 |
|
compare.exe |
/wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4 |
|
bc2.exe |
%1 %2 /savetarget=%4 /title1=%6 /title2=%7 |
|
winmerge.exe |
/ub /dl %6 /dr %7 %1 %2 %4 |
|
guiffy.exe |
-s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4 |
|
guimerge.exe |
--mode=merge3 %3 %1 %2 --to=%4 --title0=%8 --title1=%6 --title2=%7 --to-title=%9 |
|
DiffMerge.exe |
/title1=%6 /title2=%7 /title3=%8 /result=%4 %1 %2 %3 |
|
Если средств командной строки будет не хватать, то можно воспользоваться WebServicesAPITFS
TeamFoundationServer tfs = new TeamFoundationServer("https://tfsserver:8080");
VersionControlServer versionControl = (VersionControlServer) tfs.GetService(typeof(VersionControlServer));
//Получение информации о workspace (локального маппинга).
WorkspaceInfo wsInfo =
Workstation.Current.GetLocalWorkspaceInfo(Environment.CurrentDirectory);
// Stop if we couldn't figure out the workspace.
if (wsInfo == null)
{
Console.Error.WriteLine("Unable to determine the workspace.");
Environment.Exit(1);
}
//Получение референса на сервер
TeamFoundationServer tfs = new TeamFoundationServer(wsInfo.ServerUri.AbsoluteUri);
// Получение референса на воркспейс
Workspace workspace = wsInfo.GetWorkspace(tfs);
// Получение файлов в воркспейс.
workspace.Get();
Дополнительные ссылки на примеры:
Простые примеры
https://blogs.msdn.com/buckh/archive/2006/03/15/552288.aspx
Как показать метки
https://blogs.msdn.com/buckh/archive/2005/10/25/484854.aspx
Как показать размер и даты файлов
https://blogs.msdn.com/buckh/archive/2005/10/26/485458.aspx
Пример checkin политики
https://blogs.msdn.com/jmanning/archive/2006/01/21/515858.aspx
Показ текущих изменений с конкретного времени
https://blogs.msdn.com/jmanning/archive/2005/12/01/499033.aspx
Сканирование истории в чейнджсетах с измененными checkin политиками https://blogs.msdn.com/jmanning/archive/2005/11/04/489193.aspx