subpathsを使ったリポジトリをcloneする方法
subrepoを使わない場合とか、subrepoを使ってもsubpathsを使ってない場合なら、リポジトリは普通にcloneできる。ただしsubrepoかつsubpathsを使っていると、普通にcloneすると失敗する。
何故かというと、subpathsはhgrcにsubrepoが参照するリポジトリのパスを格納しているから。
cloneしてもhgrcは作成されず、hgrcは自分で作成しないといけない。
なのでhgrcにsubpathsを格納しつつpullすれば、cloneと同じような効果が得られる。
ただし毎回手打ちでやるのも面倒なので、バッチファイルを用意してみた。2段階までネストに対応。
各リポジトリ(トップ、ネスト1段階目、ネスト2段階目)のパスと、ネストしたリポジトリを格納するディレクトリを変更すれば使えるはず。ディレクトリ構成はこんな感じ.
PATH_TO_TOP ├─.hg ├─SECOND_DIR ├─.hg ├─THIRD_DIR ├─.hg
@ECHO OFF SET ROOT_DIR=%~DP0 SET TOP_REPO=PATH_TO_TOP SET SECOND_REPO=PATH_TO_SECOND SET THIRD_REPO=PATH_TO_THIRD SET TOP_HGRC=%ROOT_DIR%\.hg\hgrc SET SECOND_HGRC=%ROOT_DIR%\SECOND_DIR\.hg\hgrc :CREATE_TOP hg init ECHO [paths]>%TOP_HGRC% ECHO default = %TOP_REPO%>>%TOP_HGRC% ECHO;>>%TOP_HGRC% ECHO [subpaths]>>%TOP_HGRC% ECHO subrepo_second = %SECOND_REPO%>>%TOP_HGRC% :CREATE_SECOND IF NOT EXIST %ROOT_DIR%SECOND_DIR MKDIR %ROOT_DIR%SECOND_DIR CD /D %ROOT_DIR%SECOND_DIR hg init ECHO [paths]>%SECOND_HGRC% ECHO default = %SECOND_REPO%>>%SECOND_HGRC% ECHO;>>%SECOND_HGRC% ECHO [subpaths]>>%SECOND_HGRC% ECHO subrepo_third = %THIRD_REPO%>>%SECOND_HGRC% :UPDATE CD /D %ROOT_DIR% hg pull hg update -C :END PAUSE