Я новичок в Bazaar, пришедший на него из фона Subversion и 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
. Конфликтов не было обнаружено, но три файла были оставлены как измененные в моей локальной ветке. Я проверил и передал те с комментарием, который мне сообщили как коммит 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, поэтому похоже, что я его перезаписал.) Каков наилучший рабочий процесс в этой ситуации, чтобы избежать этих пузырей? Я должен был вытащить первым? Я опасаюсь слияния кода других людей с моими локальными незафиксированными изменениями.
Кроме того, хотя rebase обычно используется в git, похоже, он не одобрен в мире Bazaar. Если бы мы могли избежать использования плагина bzr-rebase, это было бы здорово.