2

私は 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 プラグインの使用を避けることができれば、それは素晴らしいことです。

4

1 に答える 1

1

メインラインの履歴をより明確にする 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
于 2011-12-05T21:24:41.290 に答える