- PVSM.RU - https://www.pvsm.ru -

Опыт использования TFS после перехода с SVN

Введение.

Не так давно один из проектов, в котором я участвую, перевели из SVN на TFS. Этот проект (десятки тысяч файлов, включая двоичные файлы) много лет жил и развивался под SVN. Поработав несколько месяцев после перехода, появился некий опыт, которым хочется поделиться.
Важно понять, что это опыт человека после SVN. Я использовал TortoiseSVN [1](плагин для Windows Explorer) и AnkhSvn [2] — для Студии.

мои впечатления под катом

Система управлениями версий

TFS (система контроля версий) это не совсем система контроля версий — это часть VS. После SVN это несколько напрягает. Если у меня стоит 3 студии, то чтобы понять какой TFS у меня стоит и работает требуются дополнительные усилия.

Read-only.

Привык, что никакие файлы проекта не являются «read-only», поэтому (если стоит по крайней мере VS2012) пытаешься включать «local mode». Так вот имейте ввиду, что этот режим хотя и не ставит «read-only», но и работает как получится. Начиная с определенного количества файлов/папок (50000) в workspace, этот режим не рекомендуется (читай не работает). Подробности тут [3].
Судя по всему число 50000 зависит от компьютера.
Студия VS2010 (или TFS2010?) вообще не имеет «local mode» и значит все файлы на диске будут «read-only» (добро пожаловать в старый добрый мир SourceSafe (VSS)).

Windows Explorer Plugin

TFS имеет некий plagin, например, Microsoft Visual Studio Team Foundation Server 2012 Power Tools [4], но мне известно несколько нюансов. На компьютере несколько версий студии, а Power Tools только один (интересно какой версии?). Power Tools не дружит со студией: когда я закрываю студию и в это время запускаю «Get Selected Item(s)» получаю ошибку «TF400324: Team Foundation services are not available from server…». Power Tools не может принести новый бранч с сервера на компьютер, для этого все равно придется запустить студию.

Пометить ревизию как будто ее замержили.

Простая ситуация: есть версия 1 в продакшн, из нее создали версию 2 для разработки. Баги, которые чинят в версии 1 сливают в версию 2. Довольно часто некие ревизии не надо сливать из версии 1 в версию 2. В SVN это делатеся выбором одного check-box «Only record the merge». После этого SVN показывает эти ревизии как замерженные. Так вот не нашел такой опции в UI TFS (Power Tools или VS), только командной строкой с указанием всяких важных параметров и номеров ревизий. Такой путь автоматически требует специального аккуратного человека. Интересный момент, что если указать только номер одной ревизии, TFS пометить на самом деле все ревизии начиная с указанной.

Много-ревизиный мерж (не знаю как это правильно по-русски).

Если в версии 1 починка бага потребовала несколько ревизий (но не подряд, например между этими ревизиями есть другие), то не найден способ (даже через командную строку) замержить все эти ревизии в одну ревизию версии 2. Это также касается отката ревизий и «пометить как будто замержили». Помню надо было срочно откатить две ревизии (не подряд), что бы просто проверить некую фичу (без всяких коммитов). не нашел способа!

Switch.

Я привык создавать бранчи для любых вещей, которые потребуют какого то времени или проверок на тестовой машине. Так как бранч тяжелый, с точки зрения принести его на локальный диск, я создал один бранч на диске и всякий раз делал Switch на нужный мне бранч. В моих условиях это берет максиму несколько минут. TFS не имеет switch через UI. Командная строка имеет что то похожее, но максимум это можно использовать в каких то постоянных скриптах, но не человеком.

Поиск/Фильтр по истории

TortioseSVN имеет простой и понятный поиск (и фильтр) по истории бранча, что позволяет быстро найти нужные ревизии. Можно строить сложные условия (автор ревизии, номер, комментарий и т.п.). Ничего такого же встроенного в TFS нет. Тяжело искать. Очень тяжело искать :(.

Промежуточный вывод.

В моих условиях переход оказался болезненным: многие вещи берут существенно больше времени.
Я допускаю, что может быть TFS имеют некую другую идеологию и некие вещи делаются иначе (например shelve), но общее впечатление, что TFS еще не дотягиват до SVN по возможностям.

Если будет интересно, можно добавить еще немного и интересно обсудить переход на другие части TFS (тестирование, построение билдов).

Автор: constructor

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/svn/60488

Ссылки в тексте:

[1] TortoiseSVN : http://tortoisesvn.net/

[2] AnkhSvn: https://ankhsvn.open.collab.net/

[3] тут: http://blogs.msdn.com/b/phkelley/archive/2013/05/31/tf400030-the-local-data-store-is-currently-in-use-by-another-operation.aspx

[4] Microsoft Visual Studio Team Foundation Server 2012 Power Tools: http://visualstudiogallery.msdn.microsoft.com/b1ef7eb2-e084-4cb8-9bc7-06c3bad9148f

[5] Источник: http://habrahabr.ru/post/223797/