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

в 14:05, , рубрики: .net, svn, tfs, Visual Studio, Системы управления версиями, метки: , ,

Введение.

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

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

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

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

Read-only.

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

Windows Explorer Plugin

TFS имеет некий plagin, например, Microsoft Visual Studio Team Foundation Server 2012 Power Tools, но мне известно несколько нюансов. На компьютере несколько версий студии, а 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js