Контроль версий файлов в TFS
Подсистема контроля версий файлов в TFS позволяет работать из командной строки.
Находится эта утилита по умолчанию в C:\Program Files\Microsoft Visual Studio 8\Common7\IDE , имя файла tf.exe
Примеры:
- Создание клиентской рабочей области, set mappings
- tf workspace /template:WorkspaceName;username WS1 /s:http://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 http://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 тулы:
Merge тулы:
| Продукт | Команда | Аргументы |
| TFS default | diffmerge.exe | /merge %1 %2 %3 %4 %6 %7 |
| KDiff3 | kdiff3.exe | %3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4 |
| Visual SourceSafe | ssexp.exe | /merge %1 %2 %3 %4 %6 %7 |
| Araxis | compare.exe | /wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4 |
| Beyond Compare (2-way merge) | bc2.exe | %1 %2 /savetarget=%4 /title1=%6 /title2=%7 |
| WinMerge (2-way merge) | winmerge.exe | /ub /dl %6 /dr %7 %1 %2 %4 |
| Guiffy | guiffy.exe | -s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4 |
| Ellie Computing | guimerge.exe | --mode=merge3 %3 %1 %2 --to=%4 --title0=%8 --title1=%6 --title2=%7 --to-title=%9 |
| SourceGear DiffMerge | DiffMerge.exe | /title1=%6 /title2=%7 /title3=%8 /result=%4 %1 %2 %3 |
| | | |
Если средств командной строки будет не хватать, то можно воспользоваться WebServices API TFS
TeamFoundationServer tfs = new TeamFoundationServer("http://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();
Дополнительные ссылки на примеры:
Простые примеры
http://blogs.msdn.com/buckh/archive/2006/03/15/552288.aspx
Как показать метки
http://blogs.msdn.com/buckh/archive/2005/10/25/484854.aspx
Как показать размер и даты файлов
http://blogs.msdn.com/buckh/archive/2005/10/26/485458.aspx
Пример checkin политики
http://blogs.msdn.com/jmanning/archive/2006/01/21/515858.aspx
Показ текущих изменений с конкретного времени
http://blogs.msdn.com/jmanning/archive/2005/12/01/499033.aspx
Сканирование истории в чейнджсетах с измененными checkin политиками http://blogs.msdn.com/jmanning/archive/2005/11/04/489193.aspx