Базар: слияние пузырьков в магистрали после выгрузки слияния фиксации
Я новичок в 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