Базар: слияние пузырьков в магистрали после выгрузки слияния фиксации
Я новичок в Bazaar, пришел к нему из-за подрывной деятельности и git. Я думал, что у меня есть рабочее понимание некоторых основных концепций, но уже наткнулся на камень преткновения в моем первом крупном коммите.
Проект размещен на Launchpad. Я создал локальную ветвь ("работающую") с bzr branch
. Я вносил изменения, добавлял новые файлы, переименовывал другие. В то же время другой человек в команде совершил и продвинул свои изменения. В этот момент история фиксации выглядела примерно так это:
3. Team Member A
2. Me (trivial commit of .bzrignore)
1. Original commit
Сегодня утром я bzr commit
мои изменения локально. Номер фиксации был указан как 3, который я предполагал (ошибочно), будет согласован при синхронизации с сервером. Когда я сделал bzr pull
, я получил следующее сообщение:
Using saved parent location: bzr+ssh://bazaar.launchpad.net/... bzr: ERROR: These branches have diverged. Use the missing command to see how. Use the merge command to reconcile them.
Я сделал bzr merge
. Никаких конфликтов обнаружено не было, но три файла были оставлены как измененные в моей локальной ветке. Я проверил и зафиксировал их с комментарием, который был доложен мне как commit 4. Затем я сделал bzr push
, который сообщил нет ошибки.
Теперь история фиксации (bzr log --include-merges
) выглядит следующим образом:
4. My merge commit
2.1.1 Team Member A
3. My commit this morning
2. My .bzrignore commit
1. Original commit
Здесь есть большое желание сохранить сериализованную магистральную линию и избежать этих пузырей слияния. (Досадно, что Launchpad не отображает фиксацию 2.1.1, что делает его похожим на то, что я его переписал.) Каков наилучший рабочий процесс в этой ситуации, чтобы избежать этих пузырей? Я должен был потянуть первым? Я остерегаюсь слияния чужого кода с моими локальными незафиксированными изменениями.
Кроме того, хотя ребаза обычно используется в git, похоже, что это не одобряется в мире базара. Если бы мы могли избежать использования плагина bzr-rebase, это было бы здорово.
1 ответ:
Одним из способов получить более чистую историю магистрали было бы выполнять свою работу в отдельной ветви объекта, сохраняя при этом зеркало ветви магистрали. Я предполагаю, что здесь ветви с работающими деревьями, но вы можете использовать безлесные ветви и кассу, чтобы сэкономить место на диске.
// setup the mirror branch cd <mirror directory> bzr pull <mainline> // setup a feature branch cd <feature directory> bzr branch <mirror directory> . // work on your feature branch bzr commit -m "Did some work" ... bzr commit -m "Did some more work" // ready to commit your feature cd <mirror directory> bzr pull bzr merge <feature directory> // your integration testing is done bzr commit -m "My shiny feature" bzr push