Mercurial - объединить одну и ту же ревизию в хранилище дважды? - PullRequest
1 голос
/ 02 февраля 2011

У нас есть эти репозитории Mercurial:

Trunk
|
|
|---------myapp_1_0_23 (created off release 1.0.23)    
|
|---------myapp-newstuff (created off rel 2.0.4)

График выпуска (еще не выпущен):

  • v1.0 из myapp_1.0.23, любые изменения в этом дополнениирепо будет объединено с транком
  • v2.0 из транка
  • v3.0 или v4.0, выпущенным на основе слияния myapp-newstuff и транка.Во время объединения в стволе может быть код v2.0 или некоторые новые функции, которые мы выпустим из ствола как v3.0

После внесения изменений в myapp_1.0.23 мы объединяем ихк стволу, но, скажем, они нам также нужны в myapp-newstuff, поэтому мы также объединяем их там.Что же происходит, когда мы в конечном итоге объединяем код myapp-newstuff со стволом?

В стволе уже есть изменения, сделанные в myapp_1.0.23, так что же произойдет, когда мы объединяем те же самые наборы изменений из myapp-newstuff обратно в ствол?Будет ли Mercurial достаточно умным, чтобы знать, что эти ревизии уже находятся в багажнике?

1 Ответ

5 голосов
/ 03 февраля 2011

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

Общее эмпирическое правило таково: «Делайте каждое изменение с как можно раньше родителем, а затем объединяйтесь». Если у меня есть ошибка в первой, второй и третьей версии, я исправляю ее в одной, а затем объединяю в две, а затем объединяю в три. Если вместо этого вы исправляете это первым в трех, то вам нужно попытаться разделить его на два, не внося в него все остальные изменения в третьей версии - что сложно и часто требует самого тщательного выбора, которого мы стараемся избегать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...