質問

私はちょうどバザーで出始めている、と私はチェックアウトの機能は、私が仕事のやり方のために最も有用であることがわかってきました - つまり、私は/「マスターコピー」からO cは、いくつかの開発を行うことができ、その後、コミット新しいディレクトリに自分の変化。そして、これは、「マスターコピー」を更新します。

しかし、どのような場合、私は、コードの異なる部分を変更し、二つのプロジェクト(例えば)に取り組んでいますか?言ってます:

~/master                - master copy
bzr co master ./gui
bzr co master ./engine

だから私は./engineで./guiディレクトリとボンネット下のものでGUI関連のものをやっています。どのように私は自分の変更をコミットする必要がありますか?私が最初にGUIをコミットする場合、エンジンは、私はすべての紛争は、エンジンにフラグが付けられます推測する?

一つだけがマスターコピーにコミットするか、その後のGUIとエンジンをマージする方法はあります、と?

私はこれを行う方法についてのであれば、物事はもう少し複雑にするには

bzr branch gui ./mouse

今私は多分私はマウスに、だけでなく、GUIに取り組んできました。私はGUIとマウスからのコードをマージして、マスターにコミットしたい場合は、これを管理するための最良の方法は何ですか?または実際に、また私の場合:

bzr branch gui ./keyboard

私は階層的にマージする必要があり、変更されたGUI、キーボードとマウスを変更した場合は - ?つまり、マウス+キーボード、そしてGUIでこれをマージし、習得するためのGUIをコミット

私は私が達成しようとしているものを明らかですね!お時間を事前に感謝します。

役に立ちましたか?

解決

あなたは2つのチェックアウト、どちらかに変更をコミットする任意の時間を持っている場合は、あなたが最初に潜在的に各ステップでの競合を解決すること、他の1からすべての変更をプルダウンする必要があります。それは時間をかけて衝突を解決し、あなたのコードはあまり発散しないことを確認する方が簡単ですので、これは、一般的に良いアイデアです。

あなたは「GUI」と「エンジン」に取り組んで別の開発者を持つようにしたいようしかし、それが聞こえる、またはあなただけ完了した両方のブランチでの開発まで、あなたの紛争解決を保存したいです。この場合、あなたはおそらく「のbzrのブランチ」を持つ独立した枝としてそれらを作成する必要があります。各ブランチは、ローカルのコミットを使用して、お互いに競合を心配することはできません。

:それはマージする時間が来るとき、あなたはそれを同じ最終結果を得るすべては3つの方法のいずれかを行うことができます

1。その後、マスターにそれを押し上げ、他に1つのブランチをマージ:

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main

上記の方法の欠点は、あなたの「GUI」ブランチは今それで「エンジン」の変更を持っていることです。これは彼らが戻ってメインラインにプッシュしていたら、あなたは両方の枝を捨てるつもりなら大丈夫です。しかし、あなたは長い枝を維持したい場合は、次のことができます。

2。メインラインにマージ:

cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit

これは、あなたがまだ別の支店として「GUI」と「エンジン」を持って逆さまに持っていますが、あなたは、彼らが一緒に仕事の両方であろうと確信していた前のマスターに1をコミットしなければなりませんでした。だから、あなたは本当に、おそらくしたい:

3。マージブランチを作成します。

bzr branch ~/master gui-engine-merge
cd gui-engine-merge
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
bzr push ~/master
# since this branch was only for merging, you don't need it anymore:
cd ..
rm -r gui-engine-merge

他のヒント

それは競合を検出した場合、

はい、bzrがエンジンレポからの変更をチェックインすることを防ぐ必要があります。通常は、あなたが最初に直前のチェックインした後、自分のものは他の人と素敵な果たしていることを確認するために「アップのbzr」です。

あなたの質問の後半部分に関しては、マウス/キーボード枝を扱う、これは私が通常それを行うだろうかです。その後、単純にGUIディレクトリにcdし、実行します:

bzr merge ../mouse

変更をマージした後、あなたがして、GUIディレクトリからコミットすることができ、それが「マスター」ディレクトリへのチェンジを送信します。

私はほとんどのbzrの専門家だが、これは私がSVNのレポ取引を扱ってきた方法であることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top