лучшие практики в mercurial: ветвь против клона и частичные слияния?
... так что я привык к простым вещам с Mercurial (add
,commit
,diff
) и узнал об этом .файл hgignore (yay!) и получили навык создания и переключения между ветвями (branch
,update -C
).
у меня есть два главных вопроса, хотя:
если я нахожусь в ветке "Branch1", и я хочу вытащить некоторые, но не все изменения из ветки" Branch2", как бы я это сделал? Особенно если все изменения находятся в одном подкаталог. (Я думаю, я мог бы просто клонировать весь репозиторий, а затем использовать инструмент слияния каталогов, например, Beyond Compare, чтобы выбрать и выбрать мои изменения. Похоже, что должен быть способ просто изолировать изменения в одном файле или одном каталоге.)
-
переключение между ветвями с
update -C
кажется, так просто, мне интересно, почему я беспокоить, используяclone
. Я могу только думать о нескольких причинах (см. ниже) - есть ли какие-то другие причины, по которым я отсутствую?а. если я нужно действовать сразу на двух версиях / ветвях (например, сделать разницу в производительности)
б. для резервного копирования (
clone
репозиторий на сетевой диск в физически другом месте)c.чтобы сделать выбор и выбрать слияние, как я уже упоминал выше.
1 ответ:
Я использую клон:
- недолговечные местные филиалы
- клонирование на разные машины разработки и серверы
первое использование довольно редко для меня-в основном, когда я пытаюсь идею, которую я, возможно, захочу полностью отказаться. Если я хочу объединить, я хочу объединить все изменения. Этот вид ветвления в основном предназначен для отслеживания ветвей разных разработчиков, чтобы они не мешали друг другу. Просто чтобы прояснить это последнее точка:
- Я продолжаю работать над своими изменениями и тянуть мои изменения других разработчиков, и они тащат мои.
- когда мне будет удобно, я объединю все изменения из одной (или всех) этих ветвей в мою.
для ветвей функций или более длинных ветвей я использую именованные ветви, которые более удобно разделяются между репозиториями без слияния. Он также" чувствует " себя лучше, когда вы хотите выборочно слиться.
в основном я смотрю на это так:
- именованные ветви предназначены для разработки различных ветвей или версий приложения
- клоны предназначены для управления различными вкладами в одну и ту же версию приложения.
Это мое мнение, хотя на самом деле это вопрос политики.