лучшие практики в mercurial: ветвь против клона и частичные слияния?


... так что я привык к простым вещам с Mercurial (add,commit,diff) и узнал об этом .файл hgignore (yay!) и получили навык создания и переключения между ветвями (branch,update -C).

у меня есть два главных вопроса, хотя:

  1. если я нахожусь в ветке "Branch1", и я хочу вытащить некоторые, но не все изменения из ветки" Branch2", как бы я это сделал? Особенно если все изменения находятся в одном подкаталог. (Я думаю, я мог бы просто клонировать весь репозиторий, а затем использовать инструмент слияния каталогов, например, Beyond Compare, чтобы выбрать и выбрать мои изменения. Похоже, что должен быть способ просто изолировать изменения в одном файле или одном каталоге.)

  2. переключение между ветвями с update -C кажется, так просто, мне интересно, почему я беспокоить, используя clone. Я могу только думать о нескольких причинах (см. ниже) - есть ли какие-то другие причины, по которым я отсутствую?

    а. если я нужно действовать сразу на двух версиях / ветвях (например, сделать разницу в производительности)

    б. для резервного копирования (clone репозиторий на сетевой диск в физически другом месте)

    c.чтобы сделать выбор и выбрать слияние, как я уже упоминал выше.

1 74

1 ответ:

Я использую клон:

  • недолговечные местные филиалы
  • клонирование на разные машины разработки и серверы

первое использование довольно редко для меня-в основном, когда я пытаюсь идею, которую я, возможно, захочу полностью отказаться. Если я хочу объединить, я хочу объединить все изменения. Этот вид ветвления в основном предназначен для отслеживания ветвей разных разработчиков, чтобы они не мешали друг другу. Просто чтобы прояснить это последнее точка:

  • Я продолжаю работать над своими изменениями и тянуть мои изменения других разработчиков, и они тащат мои.
  • когда мне будет удобно, я объединю все изменения из одной (или всех) этих ветвей в мою.

для ветвей функций или более длинных ветвей я использую именованные ветви, которые более удобно разделяются между репозиториями без слияния. Он также" чувствует " себя лучше, когда вы хотите выборочно слиться.

в основном я смотрю на это так:

  • именованные ветви предназначены для разработки различных ветвей или версий приложения
  • клоны предназначены для управления различными вкладами в одну и ту же версию приложения.

Это мое мнение, хотя на самом деле это вопрос политики.