リポジトリの分割や統合を実施したい場合があります。 これは hg convert --filemap を利用します。
分割は以下の例です。ポイントは filemap に書く内容で、 include 、 exclude 、 rename があります。この例では各ディレクトリのみ include していますが、複数のディレクトリを include して分割なんてこともできます。
rename の名前でカレントディレクトリに リポジトリが作成されます。元のリポジトリが壊れるわけではありませんが、注意して作業してください。
また分割が終了したら hg update を忘れないでください。
% mkdir -p repo/foo repo/bar
% cd repo
% hg init
% ls -FA
.hg/ bar/ foo/
% ls -R repo
bar foo
repo/.hg/store:
repo/bar:
repo/foo:
% echo "include foo\nrename foo ." > map-foo.txt
% echo "include bar\nrename bar ." > map-bar.txt
% hg convert --filemap map-foo.txt repo foo
% hg convert --filemap map-bar.txt repo bar
% ls -AF foo bar
bar:
.hg/
foo:
.hg/
% cd bar
% hg update
% cd ../foo
% hg update
統合は以下のようにします。bar を foo のサブディレクトリとして統合してみます。
% ls -AF foo bar
bar:
.hg/
foo:
.hg/
% echo "rename . bar" > map-sub.txt
% hg convert --filemap map-sub.txt bar foo
% cd foo
% hg update
log を引き継いで統合されます。