С учетом этого хранилища:
A1 - A2 - A3 - A4 - A5
.. вы делаете hg pull
, который извлекает еще две ревизии из удаленного репо, давая вам две головы:
A1 - A2 - A3 - A4 - A5
\
B3 - B4
Допустим, вы делаете hg merge
, что дает вам M1 набор изменений слияния :
A1 - A2 - A3 - A4 - A5----\
\ M1
B3 - B4 --------/
Так что теперь hg out
будет перечислять M1 ...
Если вы сделаете hg diff -c M1
, вы увидите:
- Файлы, которые были добавлены в B3 и B4
- Различия для файлов, которые были изменены в B3 и B4, для которых не было конфликтов (файлы не были изменены в A3-A5)
Почему набор изменений слияния M1 включает эти элементы? И почему вам нужно отправить эту ревизию в удаленный репозиторий?
Эти изменения уже есть в B3 и B4, которые находятся в удаленном хранилище. Я понимаю, почему набор изменений слияния должен включать файлы, которые имели изменения как в A3-A5, так и в B3-B4 и привели к новой объединенной версии файлов. Но я не понимаю, почему в набор изменений входят элементы, в которых нет конфликтов. Не будет ли толчок повторяющихся изменений M3, которые уже есть в удаленном репо?