Mercurial Зафиксируйте несколько наборов изменений как один набор изменений - PullRequest
6 голосов
/ 25 ноября 2011

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

Предположим, я закончил работу с этой функцией и перенес ее в центральное хранилище. Все хорошо, однако я хотел бы иметь возможность каким-то образом фильтровать журнал центрального хранилища. Насколько я понимаю, он покажет информацию обо всех сделанных мной коммитах в репозиторий разработчика. Есть ли возможность как-то отфильтровать это и отобразить информацию только о толчке в журнале истории? Я имею в виду, что это единый большой коммит - стабильный.

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

Ответы [ 4 ]

4 голосов
/ 25 ноября 2011
  1. Вы не можете иметь локальное репо и push-target с другой историей - вам придется построить промежуточное локальное репо для истории-полосы
  2. В дополнение к ссылке, предоставленной Рагурамом, я напомню Расширение Histedit .
1 голос
/ 25 ноября 2011

Может быть 2 решения, о которых я мог подумать.Однако оба имеют свои недостатки.

Предполагая, что ваш совет по разработке - "D", а стабильный - "S".

1) Для этого вы можете использовать расширение rebase.Сначала сделайте клон вашего репозитория разработчика и запустите:

hg -b <D> -d <S> --collapse --detach

Убедитесь, что вы используете последнюю версию Mercurial (стабильный совет).Совсем недавно было несколько исправлений, которые влияют на это конкретное использование rebase.Недостатком является то, что вам придется сливаться с каждой ревизией в вашей ветке разработки по отдельности.

2) Вы можете сливать свои репозитории как обычно, но вместо фиксации слияния используйте следующий хак.ss

hg update <S>
hg merge <D>
...resolve conflicts if necessary...
...but do not commit!...
hg debugsetparents <S>
hg commit -m "Squash merge from devel branch"

Таким образом, мы заставляем использовать только один родительский элемент для коммита.Это взломать и поэтому не рекомендуется.Но это прекрасно работает для меня.

1 голос
/ 25 ноября 2011

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

Единственное, что немного связано, это hg log -mкоторый показывает только слияния.Учитывая, что в конце любой ветки разработки может произойти слияние, это может быть полезно, но только если люди помещают полезное сообщение о коммите в свое слияние, а не просто «Слияние», как это делают люди.

0 голосов
/ 25 ноября 2011

Полагаю, вы смотрите, как объединить наборы изменений . Ссылка предоставляет несколько вариантов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...