Нет никакой разницы в работе, которую вы будете выполнять в обоих случаях:
с первым рабочим процессом, вы выполните слияние на шаге 5.
со вторым рабочим процессом, вы делаете то же самое слияние как часть обновления на шаге 2.
Первый рабочий процесс кажется более безопасным для многих, поскольку вы работаете над уже совершенной работой. Это означает, что возвращаться в чистое состояние тривиально, если объединение оказывается сложным: hg update -C .
.
Но вы можете вернуть исходные файлы даже со вторым рабочим процессом: hg resolve --all --tool internal:local
вернет объединение, которое началось hg update
, и выберет оригинальную версию для всех файлов.
Реальная разница в том, что первый рабочий процесс лучше показывает, что на самом деле произошло. С этим рабочим процессом вы можете представить свои изменения в меньших и более логичных шагах. Это очень помогает, когда ваши колледжи пытаются понять, что вы сделали (обзоры кода) и с будущей отладкой (с hg bisect
).
Вы можете получить лучшее из обоих миров с hg rebase
. Это позволяет вам делать небольшие и логичные коммиты, а затем, наконец, перемещать эти коммиты поверх работы, выполняемой вашими колледжами. В этом случае не будет изменений слиянием - хорошая и богатая линейная история.
Итак, если у вас есть эта история после пулла:
... [a] --- [b] --- [x] --- [y] --- [z]
\
[d] --- [e]
, где вы создали x
до z
, тогда обычное слияние создаст эту историю:
... [a] --- [b] --- [x] --- [y] --- [z]
\ \
[d] --- [e] ----------- [f]
с ребазом вы получаете
... [a] --- [b] --- [d] --- [e] --- [x'] --- [y'] --- [z']
где x'
до z'
- это перебазированные версии от x
до z
(разные идентификаторы изменений, потому что у них разные предки).
Я использую rebase, как это все время, и я чувствую, что это дает лучшую общую историю. Только не забывайте перебазировать наборы изменений, которые уже были обнародованы: перебазирование изменяет наборы изменений, но если наборы изменений уже общедоступны, то вам трудно изменить другие копии. Результатом являются повторяющиеся наборы изменений и путаница.