subrepoをさらに便利に使うためにはsubpathsを使おう

2012/01/25 追記
Mercurial 2.0 以降は これ を参照

これの続き。

subrepoは確かに便利なんだけども、あるシチュエーションでは使いにくいことになる。

  • サーバの名前が変更されたとき
  • 場所によってpushする先が違うとき(滅多にないだろうけど)

例えば、あるマシンAではsubrepo Aにpushしたりpullしたいが、あるマシンBではsubrepo Bにpushしたりpullしたい、だけど履歴は共有したい、なおかつマシンBからsubrepo Aはアクセス出来ない場合(マシンAを中心に履歴は共有する)。あるのか?というぐらい限定的だけども、現在自分が困っていて、その解決策っぽいのが見つかったのでメモ。

解決先はこれ -> http://mercurial.selenic.com/wiki/SubrepoRemappingPlan

前回 .hgsub にリポジトリのURLを記述していたが、今回はリポジトリエイリアスを記述する。

echo subdir = subrepo_name > .hgsub

.hgsubはこうなる。

subdir = subrepo_name

次にメインリポジトリの.hg/hgrcに[subpaths]を記述する。

[subpaths]
subrepo_name = https://bitbucket.org/toruuetani/virtualenv-scaffold

subdirとsubrepo_nameはかぶらないようにすること。同名だとsubrepoがネストしてたりすると余計な置換が働いて、正しいURLにならないことがある?


.hg/hgrcは他のリポジトリに伝搬しないので、実際にやりとりしたいリポジトリを記述すればOK。