説明したように名前付きブランチを使用することは良い選択ですが (唯一の選択ではありません)、このプロセスを容易にするために、よく知られている場所でいくつかの個別のクローンを使用することをお勧めします。http://host/hg/
インストール用の hgweb (以前の hgwebdir) のふりをすると (ただし、ssh:// もうまく機能しますが)、次のようになります。
http://host/hg/vendor
http://host/hg/custom
データがベンダーからカスタムに流れるが、逆方向には流れない 2 つの別個のリポジトリ。名前付きブランチは、との両方を持つdefault
唯一のブランチです。vendor
custom
default
stable
ベンダーから新しいコード ドロップを受け取ったら、それをvendor
リポジトリの作業ディレクトリに展開してから、次のコマンドを実行します。
hg addremove
hg commit -m 'new drop from vendor, version number x.x.x'
そのレポの履歴はvendor
直線的であり、あなたが書いたものは決してありません。
次に、リポジトリのローカル クローンで次のようにcustom
します。
hg update default # update to the latest head in your default branch
hg pull http://host/hg/vendor # bring in the new changes from vendor as a new head
hg merge tip # merge _your_ most recent default cset with their new drop
そして、デフォルトのローカル チャンスを新しいコード ドロップとマージする作業を行います。マージに満足したら (テスト パスなど)、ローカル クローンから にプッシュしますhttp://host/hg/custom
。
このプロセスは必要に応じて繰り返すことができ、あなたの履歴と彼らの履歴を適切に分離し、チームの全員がベンダーからの新しいコードドロップを受け入れる責任を負わずdefault/stable
、単一のリポジトリでの通常のセットアップだけに関心を持つことができますhttp://host/hg/custom
.