Как автоматически объединить 2 головы с Mercurial - PullRequest
7 голосов
/ 07 марта 2011

Мы только что перешли на Mercurial с Subversion, и есть одна вещь, которая занимает больше времени, чем ожидалось;объединяющие головки.

Нам нравится тот факт, что он сохраняет слияния независимыми от 2 коммитов (по сравнению с подрывной деятельностью), но мы в конечном итоге регулярно объединяем 2 головки для несвязанных изменений.

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

Мы фиксируем, и только один сможет перенести на центральный сервер, другой создаст 2 головы,Затем потяните, выберите 2 головки, объедините (это будет легко, поскольку изменения находятся в разных файлах).Зафиксируйте, затем нажмите.

Следовательно, есть ли расширение, которое выполняет эти шаги? Попытка слияния. Если нет конфликтов. Зафиксируйте еще. Отмените слияние

. Мы надеемся, что этот запуск будет выполнен на автоматическом сервере, поэтому1 это командная строка и еще один +1, если он может выполнить слияние, не касаясь рабочей копии.

Спасибо!


Обновление:
В итоге мы сделали несколькоСценарии Python для управления наиболее распространенными задачами (объединение и сборка; объединение 2 голов).

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 07 марта 2011

Действительно ли слияния занимают так много времени?Если это «не связанные изменения», разве это не моргнет?

Кто-то уже предложил fetch, а кто-то, вероятно, предложит rebase, но лично я считаю, что объединение - это кодирование, и я хочуэто быть ручным.Это почти не занимает времени, и это возможность дать хорошее сообщение типа «Ввод работы Джейн на полпути через мою работу с FooBar» (вместо бесполезной фиксации сообщений фиксации, которую обеспечивает выборка).

3 голосов
/ 07 марта 2011

Похоже, вы должны быть в состоянии использовать hg fetch для этого.Он извлечет изменения с сервера, объединит их, а затем автоматически подтвердит объединение.Это также вызывает конфликты слияния.Он включен в Mercurial, так что просто добавьте

fetch =

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

...