私は Web データベースを開発していますが、これはすでに約 12 の個別のインストールで使用されており、そのほとんどは私も管理しています。各インストールには、かなりのローカル構成とカスタマイズがあります。svn から mercurial に切り替えたばかりなので、その分散された性質を利用してローカルの変更を追跡したいと考えています。インストールされている各サーバーを独自のレポとしてセットアップしました (および .hg ディレクトリを提供しないように apache を構成しました)。
私の問題は、開発ツリーにもローカル構成が含まれていることです。バージョン管理されていない構成ファイルにすべてのビットを配置することは避けたいと考えています。では、マスター リポジトリとインストール済みのコピーにローカル構成が伝播されないようにするにはどうすればよいでしょうか。
例:バージョン管理と配布が必要な長い config.ini ファイルがあります。「クリーン」バージョンにはデータベース接続パラメーターのプレースホルダーが含まれており、インストールされたコピーのリポジトリーに開発サーバーのパスワードを入れたくありません。しかし、ときどき、伝播する必要のある変更 (新しいデフォルトなど) を行います。同様の状況にあるファイルがいくつかあります。
これまでのところ、mq をインストールして、ローカルの変更をパッチ (実際には、論理的に別々の変更セットを持つ 2 つのパッチ) に変換することが最善の方法です。通常の変更セットをローカルリポジトリにコミットするたびに、すべてのパッチをポップし、変更をコミットして、パッチを再適用する必要があります。マスター リポジトリにプッシュする準備ができたら、もう一度パッチをポップし、プッシュして、再適用する必要があります。これはすべて複雑で、エラーが発生しやすいものです。
私が見ることができる他の唯一の代替手段は、プッシュを忘れて変更セットをパッチとしてのみ伝播することですが、これはさらに悪い解決策のようです. 誰かがより良いセットアップを提案できますか? これがそれほど珍しい構成だとは想像できませんが、それについては何も見つかりませんでした。
編集:ここでの提案をフォローアップした後、名前付きブランチとリベースがシンプルで実行可能なソリューションを提供するという結論に達しました。私自身の回答の形で説明を追加しました。ご覧ください。