SVN pristine の実験2015年09月18日 12時17分42秒

FreeBSD の更新を続けていると、次第に /usr/src が膨らんでいった。調べてみると、/usr/src/.svn/pristine が大きくなってきているようだ。

そこで、/usr/src を最新にし、それと同じリビジョンを新しくチェックアウトしてみる。

% svn up /usr/src
...
Updated to revision 287945.
% du -sh /usr/src/.svn
1.5G    /usr/src/.svn
% svn co https://svn0.us-east.freebsd.org/base/head /tmp/src
% du -sh /tmp/src/.svn
1.0G    /tmp/src/.svn
見ての通り、一年以上あれこれと保持してきた .svn ディレクトリは、五割増しになっている。

次はどのくらい違うか調べてみる。

% diff -urp /usr/src/.svn /tmp/src/.svn | tee /tmp/diff.out
Only in /usr/src/.svn/pristine/00: 0001d6a6dcc4d283267971aa4fc0de0c2e7d7200.svn-base
Only in /usr/src/.svn/pristine/00: 0003fd1242ddbbb6b5814d64e9525da4bb35844d.svn-base
Only in /usr/src/.svn/pristine/00: 00041fbcc5f74d9069baa0cb4db0b815299be901.svn-base
Only in /usr/src/.svn/pristine/00: 0006a98938688bca351aa84c389fd9576888d438.svn-base
% find /usr/src/.svn -type f | wc
   89305   89305 6787015
% grep -v 'Only in' /tmp/diff.out | wc; wc /tmp/diff.out
   26285  105140 2234225
   26369  105404 2237049 /tmp/diff.out
三割くらいファイルが多いようだ。

入れ換えられるか試してみる。無論バックアップを取ってから試すが、その部分は省略。

% svn stat /usr/src
M       /usr/src/contrib/top/display.c
M       /usr/src/etc/rc.subr
M       /usr/src/sbin/mount/mount.c
 M      /usr/src/sys
M       /usr/src/sys/i386/conf/GENERIC
M       /usr/src/sys/kern/subr_taskqueue.c
M       /usr/src/sys/vm/vm_glue.c
M       /usr/src/usr.bin/mkuzip/mkuzip.c
M       /usr/src/usr.bin/top/machine.c
あれこれ、いじってある。rsync で新しくチェックアウトした .svn に変更してみる。タイムスタンプを使うと同じファイルもコピーしそうなので、-c で。
% rsync -acl --delete /tmp/src/.svn/ /usr/src/.svn
% svn stat /usr/src
M       /usr/src/contrib/gdb/gdb/sparc64fbsd-tdep.c
M       /usr/src/contrib/top/display.c
M       /usr/src/etc/rc.subr
M       /usr/src/sbin/mount/mount.c
M       /usr/src/sys/i386/conf/GENERIC
M       /usr/src/sys/kern/subr_taskqueue.c
M       /usr/src/sys/vm/vm_glue.c
M       /usr/src/usr.bin/mkuzip/mkuzip.c
M       /usr/src/usr.bin/top/machine.c
一つのファイルが変更されたことになっている。これは、svn revert で処理をする。

取り敢えずのところは、問題は無いようだ。当面影響を見ることにする。