2010年1月11日

convert と filemap を利用した hg リポジトリの分割と統合

リポジトリの分割や統合を実施したい場合があります。 これは hg convert --filemap を利用します。

分割は以下の例です。ポイントは filemap に書く内容で、 includeexcluderename があります。この例では各ディレクトリのみ 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 を引き継いで統合されます。

blog comments powered by Disqus