私のチームは HG を使用して 3 つの異なる環境を開発しています (それぞれが独自のブランチです)。
- リリース(稼働しているもの)
- QA (テスト対象)
- Dev (開発しているもの)
QA が変更のバッチで完了したら、QA を Release にマージします。次に、Dev を QA にマージします。リリースに直接コミットされるホットフィックスがリリースで必要になる場合があります。その後、リリースは QA にマージされ、QA は開発にマージされます。
このワークフローは、1 つの詳細を除いて、非常にうまく機能しています。私たちのビルド システムは、ブランチごとに異なる Maven 依存関係を参照します。たとえば、QA では、ビルド ファイルは次のようになります。
// build.gradle
apply plugin: 'java'
dependencies {
// This dependency shouldn't ever change during a merge.
compile 'internal.lib:lib-qa:1.0'
}
リリース時には、次のようになります。
// build.gradle
apply plugin: 'java'
dependencies {
// This dependency shouldn't ever change during a merge.
compile 'internal.lib:lib-release:1.0'
}
何らかのマージ (ホットフィックスまたは通常) を行うと、Mercurial は次のような行を変更します。
compile 'internal.lib:lib-release:1.0'
マージをコミットする前にこの変更を手動で元に戻すことができますが、最終的にリリースを忘れて壊れてしまうため、この手順は避けたいと思います。このステップを不要にするための練習やコツはありますか?
これまでに思いついた最善の方法は、ビルドでブランチをチェックしてから、使用する依存関係を動的に決定することですが、ビルドが HG に依存するようになるため、満足のいくものではありません (Gradle Eclipse で問題が発生しました)。 Gradle で HG が必要な場合、プラグインは正しく機能しません)。