В Mercurial в чем разница между HG graft и HG rebase
Я знаю Rebase расширение (в комплекте), в то время как Графт является основной функцией (которая заменила пересадки (в комплекте) расширение).
graft
описан как:
копировать изменения из других веток на ветки
эта команда использует логику слияния Mercurial для копирования отдельных изменений из других ветвей без слияния ветвей в графике истории. Это иногда известный как "backporting" или "сбор вишни".
rebase
описан как:
Rebase позволяет перемещать коммиты в истории Mercurial (используя серию внутренних слияний). Это имеет много применений:
- перенос изменений между ветвями
- "линеаризации" история
- переупорядочивание пакетов
- сворачивание нескольких изменений в один набор изменений
оба, похоже, используют слияние для перемещения или копирования наборов изменений между ветвями.
Графт копии. Ребаз движется. Но!--2--> копии.
так часто кажется, что я могу достичь моей цели копирование изменений в любом случае. Имеет ли значение, какой из них я использую? Когда я должен предпочесть одно другому?
Е. Г. только графт быть использовано при копировании на другой имени ветку? Или только когда есть только один набор изменений?
Edit: может быть, rebase является потенциально небезопасным надмножеством трансплантата, но может использоваться только с draft
изменений во время разработки для редактирования местной истории, в то время как трансплантат является безопасным подмножеством перебазировать, которые могут быть использованы с public
changesets во время обслуживания для backporting?
1 ответов
hg graft
позволяет "снимать сливки", как вы отметили в своем вопросе. Например, вы можете запустить hg graft -D "2085::2093 and not 2091"
скопировать только некоторые изменения из другой редакции. Для сравнения,hg rebase
(С или без --keep
) захватит любой набор изменений, который вы укажете и все из его decendant изменений.
и rebase
позволяет свернуть изменений (с --collapse
). Насколько я могу судить, graft
нет.
еще одна разница у меня есть заметил: hg graft --edit 123
позволяет привить ревизию 123 в рабочий каталог и отредактировать сообщение фиксации. Я не могу найти hg rebase
эквивалентны. Однако я должен отметить, что hg histedit
также позволяет редактировать сообщение фиксации во время перебазирования.
вероятно, есть и другие различия, о которых я не думаю. Итак, сообщество: не стесняйтесь указывать на них в комментариях, и я с удовольствием пересмотрю этот ответ, чтобы сделать его более полным.
посмотреть the graft
документация и документация по расширению Rebase для получения более подробной информации.