私は 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
。競合は検出されませんでしたが、3 つのファイルがローカル ブランチで変更されたままになりました。コメント付きでそれらを検査してコミットしました。これは、コミット 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 で一般的に使用されていますが、Bazaar の世界では一般的に承認されていないようです。bzr-rebase プラグインの使用を避けることができれば、それは素晴らしいことです。