Mercurial справится с этой ситуацией просто великолепно - потому что вы используете 'merge'. Когда вы используете экспорт / импорт (или трансплантацию), вишня выбирает , как она называется, и у вас есть несколько одинаковых наборов изменений там с разными идентификаторами узлов (из-за разных родителей), тогда Mercurial не может знать "О, этот уже здесь". Однако до тех пор, пока вы объединяетесь, Mercurial будет замечательно говорить «о, в этом репо уже есть этот набор изменений, поэтому мне не нужно его повторно применять».
Общее эмпирическое правило таково: «Делайте каждое изменение с как можно раньше родителем, а затем объединяйтесь». Если у меня есть ошибка в первой, второй и третьей версии, я исправляю ее в одной, а затем объединяю в две, а затем объединяю в три. Если вместо этого вы исправляете это первым в трех, то вам нужно попытаться разделить его на два, не внося в него все остальные изменения в третьей версии - что сложно и часто требует самого тщательного выбора, которого мы стараемся избегать.