2012-04-10 7 views
0

現在、Bazaarを試しています。私は現在、開発者のチームと一緒に作業しているプロジェクトでうまくいく設定を探しています。私たちのモデルは現在のところ集中化していますが、私は大きなメリットがあるとすれば、これを変えるよう説得しています。それを主張しているにもかかわらず、私はバージョンコントロールシステムを変更することはできません...いくつかの人々は何が良いのか分からない。Bazaarで分岐をプル/プッシュ/マージすると変更する

現在、プロジェクトは階層に分かれています。これはウェブプロジェクトであり、データアクセスレイヤー、ビジネス/ドメインロジックレイヤー、ウェブレイヤー(およびドメインにあるサービスなどの他のアプリケーションレベルプロジェクトの束)で構成されています。

現時点では、私が言及した階層のそれぞれに1つずつ、多数の作業ツリーがあるバザーリポジトリがあります。

質問パート1

は、各階層のためのレポジトリ内部の作業の木を使用してより良い代替手段はありますか?私は考えた何

  • 1脂肪のブランチ/作業ツリー(私はすべてをチェックアウトするために必要で、これは意図的に回避された言われています)にすべてを置きます。開発者は、複数のリポジトリのサブセットをチェックアウトすることによって、独自のローカルセットアップを作成しています。たとえば、私がサービスの1つで作業している場合、私はサービス、ビジネス層、およびデータアクセス層をローカルディレクトリにチェックアウトします。現在の設定では、リポジトリ全体をチェックすることなく、何か他のものに影響を与えないトップ・ティア・アプリケーションをチェックアウトして、変更を加えてコミットすることができます。サイズはほぼ1GBです。問題は、私のWeb層が順番にデータアクセス層に依存している ビジネス層、のバージョンに依存していることは本当にある

    • :私はを改善したいと思います

    。 このようにプロジェクトを編成したところ、 のバージョンは、ビジネスレイヤーとデータアクセスレイヤーが、Webレイヤー上の特定のコミット に対して最新のものであるかどうかはわかりません。これは私にとって非常に悪いと感じます。私は 私たちのアプリケーションのチェックアウトバージョンにいくつかコミットすることができるようにしたい作業の木の 。現時点では、作業中のすべてのツリーにまたがって を追跡しようとしていますが、 はかなり間違っています。

質問パート2

私は、リリースブランチのためにこれらの層のいずれかを分岐し、分岐のルートに変更は私だけプッシュしないか、そのリリースにあることが必要であることが判明した場合ブランチに必要な変更は必要ですか?

したがって、これらのプロジェクトごとに1つの作業ツリー(または実際のブランチ)の構造が存在すると仮定して、それぞれのリリースのためのバージョンを含むブランチを作成します。したがって、Webサイトツリーには、その特定のリリースの開発状況をカプセル化するwebsite_rls1ブランチがあります。後のリリースのための一般的な開発が並行して行われる予定です。したがって、このリリースに関連するファイルが多数ある場合、そのファイルをリリースブランチにマージしたいと思います。これを行うための好ましい方法は何か。私が理解しているように、Bazaarは個々のファイルのマージ/プルをサポートしていません。

  • ちょうどリリース枝の私の地元のチェックアウトに私がしたいファイルを置くと私は改善したいと思いますどのよう

をコミット:

私が考えた何

この考慮後

  • は、バージョンinformatiを殺すために起こっていますこのファイルに対してオンにします。私はtactでバージョン情報を保持したいが、変更のサブセットのみをマージする。私は本質的に、個々のファイルを子ブランチにプッシュするか、あるいは何かの影響を与えたいと思っています。

いずれの感想もありがとうございます。

答えて

2

#1の複数の依存のbzrリポジトリを管理するための2つのプラグインがあります

  1. https://launchpad.net/bzr-externals
  2. https://launchpad.net/bzr-scmproj

彼らは異なるアプローチを持っており、さまざまな状況に適しています。

また、この問題をビルドレベルで解決することを検討することもできます。 Jenkinsのような継続的な統合システムと、IvyやMavenのような依存性解決システムを使用します。このシステムの自動ビルドを使用してQAを実行する必要があります。これにより、ビルドされたバグが、そのビルドを作成するために使用されたさまざまな依存関係のバージョンをログに含める特定のビルド番号を参照できるようになります。


#2は本当にマージを行う方法はありません。 Bazaarはチェリーピックマージを追跡していません(まだ)。より良いアプローチは、元の修正をリリースブランチで作成し、それを親に戻してマージすることです。

+0

私は#1は、ネストされた木であるために、私が本当に欲しいものと思います。 http://wiki.bazaar.canonical.com/NestedTreesDesign - これはまだサポートされていません。私は、私たちの継続的な統合プロセスが問題の解決に役立つと思います。 #2のためには、正しいブランチで元の修正を行う必要があります。私の懸案事項は、あるブランチで行われた変更がさらに数週間後に必要になる可能性があることです。そのブランチが起きた場合、私はその情報をすべて失います。しかし、はい、私はあなたが合併が行われないことが正しいと思います。 –

関連する問題