Действительно, есть случаи, когда имеет смысл сокращать / удалять / полировать наборы изменений или разделять частные / текущие и публичные / готовые изменения.Вот несколько советов, как справиться с этим с помощью Mercurial:
Если вы сделали серию небольших коммитов (что хорошо), но вы предпочитаете публиковать их как один набор изменений (которыйимеет смысл, если вы зафиксировали (возможно противоречащие - наборы изменений снимков), используйте расширение :
$ hg collapse -r <first-ref>:<last-ref> # both revs including
Если у вас есть только изменениявы хотите сохранить конфиденциальность, в то время как другие вы хотите опубликовать, либо (а) используйте ртутные очереди для ваших личных изменений, либо (б) зафиксируйте ваши личные изменения только в собственной ветви ( названный, добавленный в закладки или клонированный ) и регулярно объединяйте его с публичной веткой.Последнее требует от вас частого переключения между ветками, если вы чередуете частные и публичные изменения.
ОБНОВЛЕНИЕ
Для иллюстрации варианта2.b, рассмотрите график изменения:
0--1--4--5---8--9 <= public/stable branch
\ \
2--3--6--7 <= private/dev branch
Это означает, что вы внесли изменения 2
и 3
в ветку dev .Затем вы поработали над веткой stable (ревизии 4
и 5
).Эти изменения также имеют смысл в dev , поэтому вы объединяете их в dev (ревизия 6
).Наконец, вы вносите еще одно экспериментальное изменение в dev (ревизия 7
) и некоторые готовые к публикации улучшения в stable (ревизии 8
и 9
).Теперь вы можете опубликовать (то есть отправить в удаленный репозиторий) изменения, сделанные в stable , запустив
$ hg push -r 9 # or `-r stable` if the branch is named or bookmarked as such
Все частные изменения останутся локальными!
Обратите внимание, чтоесли вы планируете полировать свои частные коммиты позже (например, свернуть их в одну ревизию), вы не должны объединяться в стабильную ветку (свертывание не может работать через слияния).Вместо этого перебазируйте ваши личные изменения всякий раз, когда вы хотите, чтобы они были синхронизированы с последними изменениями в stable .