hgflow で開発環境、検証環境、本番環境の切り替えをうまく行うにはどのような方法が良いのでしょうか?
おおひらです。いつもお世話になっております
開発対象が環境(開発、検証、本番)によって書き換える必要がある箇所が多くあるウェブサービスのため
現状の手作業での操作は無理がある状況です。手作業での操作を減らして作業の負荷を減らしたいと考えています。
各環境の変更点もmercurialの管理下に入れてうまく切り替え操作を行うにはどうしたら良いのでしょうか?
自分で考えた案はあるのですが、多分もっとまともなやり方があるように思うんです。
このやり方は問題があるとか、もっと簡単なやり方があるとかご指摘いただけるとたすかります。
以下自分の案の説明です。ソースコードは実際に動作確認したものではないのでミスがあるかもしれませんすいません。
案1
hg flow develop のstartとfinishの間で開発、検証、本番を切り替える。
下のような感じです。
...省略...
hg flow feature finish
hg flow develop start 2015-09-kaihatu
# 開発用に修正、コミット
# 開発環境で動作確認
hg flow develop finish
hg flow develop start 2015-09-kensyou
# 検証用に修正、コミット
# 検証環境で動作確認
hg flow develop finish
hg flow develop start 2015-09-honban
# 本番用に修正、コミット
# 本番環境で動作確認
hg flow develop finish
hg flow release finish
このやり方の問題点は、
-feature フローでの新機能開発中に開発環境でテストができない
-環境別に修正する作業に手間がかかる
-各環境の状態を比較し難い
案 2
それで、それぞれの環境用の修正をfeatureストリームに置いて
hg flow feature promoteを使えるのではないかと考えました。
下のような感じ
...省略...
hg flow feature finish
hg flow feature/kaihatu
hg flow promote
hg flow develop start 2015-09-kaihatu
# 開発環境で動作確認
hg flow develop finish
hg flow feature/kensyou
hg flow promote
hg flow develop start 2015-09-kensyou
# 検証環境で動作確認
hg flow develop finish
hg flow feature/honban
hg flow promote
hg flow develop start 2015-09-honban
# 本番環境で動作確認
hg flow develop finish
hg flow release finish
このやり方だと環境の切り替えは楽になります。
各環境の比較も楽になります。
問題点は
-feature フローでの新機能開発中に開発環境でテストができない
-このやり方で使えるように基本のソースを変更する必要がある
その上でさらにそれに合ったfeature/kaihatu, feature/kensyou, feauture/honbanを準備しなければならない。
(準備にかなり手間が掛かりそう)
案 3
featureストリームでの新機能開発やバグフィックス作業中に開発環境でテストできるように
promoteの送り先を変更することを考えました。
下のような感じ
...省略...
hg flow feature finish
hg flow feature start new1
hg flow feature/kaihatu
hg flow promote feature/new1
hg flow feature/new1
# new1 の修正、コミット
# 開発環境で動作確認
hg flow feature finish
hg flow feature start bugfix1
hg flow feature/kaihatu
hg flow promote feature/bugfix1
hg flow feature/bugfix1
# bugfix1の修正、コミット
# 開発環境で動作確認
hg flow feature finish
hg flow develop start 2015-09-kensyou
hg flow feature/kensyou
hg flow promote develop/2015-09-kensyou
hg flow develop/2015-09-kensyou
# 検証環境で動作確認
hg flow develop finish
hg flow develop start 2015-09-honban
hg flow feature/honban
hg flow promote develop/2015-09-honban
hg flow develop/2015-09-honban
# 本番環境で動作確認
hg flow develop finish
hg flow release finish
このやり方だと
feature フローでの新機能開発中に開発環境でテストができるようになります。
問題点は、
-このやり方で使えるように基本のソースを変更する必要がある
その上でさらにそれに合ったfeature/kaihatu, feature/kensyou, feauture/honbanを準備しなければならない。
(準備にかなり手間が掛かりそう)
案 4
現状基本のソースは本番環境になっていて、開発、検証中は別のものに入れ替えるようになっています。
そのため、なんとかfeature/kaihatu, feature/kensyouだけ準備して
feauture/honbanを準備しないで済むとすごく助かるのです。
今までの案1,案2,案3では、feature/kaihatu, feature/kensyou, feauture/honbanをプロモートしていましたが
feature/kaihatu, feature/kensyouはプロモートするとして、feauture/honbanをプロモートしないで
feature/kaihatu, feature/kensyouのプロモートを打ち消す処理を行うことはできないのでしょうか?
hg backout というのが使えそうなきもするのですが、マージ実施リビジョンに対しては実施できないとマニュアルにあります。
案3に近い状態の図を添付します。