私は2つの常設ブランチ、デフォルトとUATを持つ水銀のリポジトリを持っています。新しいバージョンのアプリケーションをUAT環境に展開(プロモート)するたびに、安定したデフォルトコミットをUATブランチにマージすることでこれを行います。場合によってはUATブランチでバグ修正され、これらのバグ修正がデフォルトに戻されます。Mercurial:ブランチ固有の変更がダミーマージ後に戻ってくる
UATブランチでは、接続文字列とさまざまな環境設定のためにいくつかのものを展開する必要があります。私がしようとしたのは、UATブランチでこれらの変更を行い、UATにデフォルトをマージした直後にコミットすることでした。この1つのコミットをデフォルトに戻してダミーマージしました。これは、UATからデフォルトへのバグフィックスマージは、これらのUAT固有の変更をやり直すことはしません。
しかし、私が望んでいたほどスムーズに行かなかった。ダミー合併デフォルトにコミットしてから、私は次のシナリオの両方を試してみた:#1、#2を実行している間に
1) Make a few more commits to default and then "promote" to UAT (merge default onto UAT)
2) Make a bugfix on UAT and "backport" it to default (merge UAT onto default)
両方のシナリオが同じ地点から開始するように、私はすべてを剥奪しました。
私は何を見ていることは、最後の方向に応じて、私はまだ、どちらか一方のマージを行った後に変更されたファイルを検査し、元に戻す必要があるマージということである - 時々マージがUATにデフォルト設定を入れしようと時々UAT構成をマージします。
構成の変更を元に戻してマージをコミットすると、同じ方向の将来のマージが正しく動作しますが、もう一度別の方向に進むと、誤った構成がファイルに再度挿入されます。
私には何が欠けていますか?
短期的には、メンテナが自分のマシンから手動でアプリケーションを配備することに制限されています。彼は古いWebアプリケーションなのでクローンが1つしかなく、IISフォルダの設定を変更することは使命です。私が本当に必要とするのは、デフォルトからのマージ、再構築、デプロイ、バグフィックスを後のリリースのデフォルトに戻すことができるワークフローを使用できるようにすることです。私がUATをデフォルトに戻すのではなく、代わりにバグ修正を移植すると、正しく動作すると思いますか?これは、バグ修正がたくさんある場合には問題になります... –
UATの設定をコミットして(あなたのメンテナが簡単に)、ローカルに変更することはできますか?マージの前に変更を残し、コミット時にそれらを除外するために '-X'を使用する必要があります([エクステンションを除外](https://bitbucket.org/aragost/exclude)が少し助けてくれるかもしれません)。 –
これは基本的に彼が現時点でやっていることです。必要に応じて棚上げし、棚上げしません。残念なことに、シームレスではなく、より生産性の高い環境を追加すると、理想的ではない複数の棚やmqを扱わなければなりません。私は今、移植のアプローチを試して、それがどうなるかを見てみようと思っています。 –