2011年11月08日

Mercurial 2.0

Mercurial の2.0がリリースされていた。

大きな変更点の1つとして、 LargefilesExtension があった。

これは、うれしいので、試してみた。

$ mkdir repoA
$ cd repoA
$ hg init

で次のようにやってみる。これまで通りのadd

dd if=/dev/urandom of=thisfileislarge count=20000
hg add  thisfileislarge
hg commit -m 'add'
i=1
while [ $i -le 10 ]; do
        dd if=/dev/urandom of=thisfileislarge count=20000
        hg commit -m 'update $i'
        i=`expr $i + 1`
done

「thisfileislarge: 指定ファイルの管理には 30 MBを超えるメモリが必要です」などと言われる。

$ du -k
4       ./.hg/cache
0       ./.hg/largefiles
110008  ./.hg/store/data
110024  ./.hg/store
110056  ./.hg
120060  .

でかい。

まずは、lfconvertを試す。

$ hg lfconvert --size 5 repoA repoB

size指定の単位はMB。

$ du -k repoB
110000  repoB/.hg/largefiles
4       repoB/.hg/store/data/~2ehglf
4       repoB/.hg/store/data
20      repoB/.hg/store
110036  repoB/.hg
110036  repoB

largefilesというディレクトリができている。

これをclone

$ hg clone repoB repoC 
ブランチ default へ更新中
ファイル状態: 更新数 1、 マージ数 0、 削除数 0、 衝突未解消数 0
getting changed largefiles
1 largefiles updated, 0 removed
$ du -k repoC
8       repoC/.hg/cache
10004   repoC/.hg/largefiles
4       repoC/.hg/store/data/~2ehglf
4       repoC/.hg/store/data
16      repoC/.hg/store
10048   repoC/.hg
4       repoC/.hglf
20052   repoC

小さい。

$ cd repoC
$ hg update -r 5
ファイル状態: 更新数 1、 マージ数 0、 削除数 0、 衝突未解消数 0
getting changed largefiles
1 largefiles updated, 0 removed
$ du -k
8       ./.hg/cache
20004   ./.hg/largefiles
4       ./.hg/store/data/~2ehglf
4       ./.hg/store/data
16      ./.hg/store
20048   ./.hg
4       ./.hglf
30052   .

必要な分だけ、持ってくるようだ。 いいかも。



トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
体重
masahino123の体重
livedoor Readerに登録
RSS
livedoor Blog(ブログ)