среда, 6 ноября 2013 г.

Трюки TFS

Привет! Хочу поделиться парой трюков, которые помогли мне при работе с Team Foundation Server. Думаю, что они могут быть полезны и вам в повседневной жизни разработчика.


Перенос изменений на другую ветку

У нас на проекте используется две ветки: одна для стабилизации и внесения исправления (назовем ее stabVer), а вторая - ветвь Main, в которую вносятся новый функционал. При работе с ними есть четкое правило: все исправления ошибок должны вноситься в версию stabVer и потом сливаться с веткой Main.

Но может возникнуть ситуация, когда изменения для исправления ошибки были внесены в ветке Main. И для того, чтобы перенести эти изменения на ветку stabVer без комитов и слияний в разные стороны, есть один трюк. Для этого нам понадобится Team Foundation Server Power Tools. Скачиваем и устанавливаем. Далее выполняем следующие действия:

  1. Кладем все изменения на полку с откатом изменений (для этого снимаем галочку Preserver pending changes locally в окне Shelve).
  2. Открываем командную строку и выполняем команду:
 tfpt unshelve “ShelveName” /migrate /source:”$/MyTeamProject/Main” /target:”$/MyTeamProject/stabVer”


  • где "ShelveName" - наименование сохраненных на полке изменений
  • /migrate - указывает, что изменения нужно перенести на другу ветку.
  • /source:"..." - ветка-источника
  • /target:"..." - ветка-приемник.


После выполнения этой команды все изменения будут перенесены в ветку stabVer. Далее мы можем их фиксировать и сливать с веткой Main, как того требует процесс.


Фиктивные слияния

Иногда нет необходимости переносить изменения из stabVer в Main, но необходимо очистить историю коммитов для слияния. Для этого есть фиктивное слияние. Оно позволяет слить все ненужные изменения в веткой Main без реального переноса изменения. Для этого нужно в командной строке выполнить команду


tf merge /recursive /discard /version:C58542~58542 $/MyTeamProject/stabVer $/MyTeamProject/Main

  • где /recursive - рекурсивный обход всех папок проекта
  • /discard - указывает, что не нужно делать реальное слияние, а только нужно поправить историю изменений
  • /version:C58542~58542 - диапазон изменений. Даже для одного changeset'а надо указывать диапазон, чтобы не порушить историю
  • оставшиеся два параметра - откуда и куда делаем слияние.


Комментариев нет:

Отправить комментарий