SVK で落とした Subversion のレポジトリから svn で2009年03月28日 10時50分13秒

SVK を使っているのだから、SVK でチェックアウトするのが王道であり、svn で取り出して修正するなどと言うことは自殺行為にしかならない。しかし、参照するだけなど変更を行なわず、余計な SVK の呪縛から逃れたい場合もある。

SVK の落としてきたレポジトリを svn から参照してチェックアウトすることも出来る。FreeBSD の svn サーバを SVK で複製した。SVNROOT が /mnt/src なので、/mnt/src/local から参照できる。


% svn co file:///mnt/src/local/freebsd/base/stable/7 /usr/src/stable7
A    /usr/src/stable7/usr.bin
A    /usr/src/stable7/usr.bin/lastcomm
A    /usr/src/stable7/usr.bin/lastcomm/lastcomm.c
A    /usr/src/stable7/usr.bin/lastcomm/pathnames.h

特にこのやり方で、間違って手元の修正をいれてしまうと、本家での修正と衝突することになる。避けるように。

前回

FreeBSD の svn サーバを複製する2009年03月19日 01時09分14秒

FreeBSD が CVS から Subversion に移行して久しい。CVS の時は、cvsup にて、cvs のレポジトリを取得することが可能だった。Subversion では svk を用いて、svn のレポジトリを取得することが出来る。

svk は SVKROOT を設定しないと、ユーザのホームディレクトリにファイルを置く。それには少し大きすぎるので、別の場所に置く事にする。


% setenv SVKROOT /mnt/src
% cd /mnt/src

svk に FreeBSD のレポジトリを登録する。


% svk mirror svn://svn.freebsd.org/base //freebsd/base
Repository /mnt/src/local does not exist, create? (y/n)y
Mirror initialized.  Run svk sync //freebsd/base to start mirroring.

後は、sync コマンドでファイルを取得する。


% svk sync //freebsd/base
Syncing svn://svn.freebsd.org/base
Retrieving log information from 1 to 189528
.............................................   0.0%

実際に取得してみたが、レポジトリは 4GB を越えていた。時間は正確には計っていないが、二十四時間から三十六時間ぐらい掛かった様だ。転送速度にムラが大きかったので、サーバの活動状況などに大きく影響される様だ。

ただ単に、ソースで追いかけるだけなら、レポジトリを複製する必要はない。

svk short tour2009年02月10日 13時50分26秒


% env SVKROOT=/tmp/.svk svk depotmap --init
Repository /tmp/.svk/local does not exist, create? (y/n)y
% env SVKROOT=/tmp/.svk svk import -m 'Impoorting /tmp/work into //local/head/wo
rk.' //local/head/work /tmp/work
Committed revision 1.
Import path //local/head/work initialized.
Committed revision 2.
Directory /tmp/work imported to depotpath //local/head/work as revision 2.
% env SVKROOT=/tmp/.svk svk co //local/head/work /tmp/svkwork
Syncing //local/head/work(/local/head/work) in /tmp/svkwork to 2.
A   /tmp/svkwork/1.txt
A   /tmp/svkwork/a.txt
% cd /tmp/svkwork/
% env SVKROOT=/tmp/.svk svk stat
% env SVKROOT=/tmp/.svk svk log
----------------------------------------------------------------------
r2:  uyota | 2009-02-09 12:57:38 -0500

Impoorting /tmp/work into //local/head/work.
----------------------------------------------------------------------
r1:  uyota | 2009-02-09 12:57:38 -0500

Directory for svk import.
----------------------------------------------------------------------
% echo "10 11 12" >> 1.txt 
% svk diff
Repository /export/home/uyota/.svk/local does not exist, create? (y/n)Interrupte
d.
% setenv SVKROOT /tmp/.svk
% svk diff 1.txt 
=== 1.txt
==================================================================
--- 1.txt       (revision 2)
+++ 1.txt       (local)
@@ -1 +1,2 @@
 1 2 3
+10 11 12
% svk ci -m 'Added 2 digits numbers.'
Committed revision 3.
%env SVKROOT=/tmp/.svk svk mv a.txt A.txt
A   A.txt
D   a.txt
% svk ci -m 'Uppercase.'
Committed revision 4.
% ls -a
.       ..      1.txt   A.txt
% svk log
----------------------------------------------------------------------
r4:  uyota | 2009-02-09 13:10:02 -0500

Uppercase.
----------------------------------------------------------------------
r3:  uyota | 2009-02-09 13:02:20 -0500

Added 2 digits numbers.
----------------------------------------------------------------------
r2:  uyota | 2009-02-09 12:57:38 -0500

Impoorting /tmp/work into //local/head/work.
----------------------------------------------------------------------
r1:  uyota | 2009-02-09 12:57:38 -0500

Directory for svk import.
----------------------------------------------------------------------

旅程cvsMercurial/hggitSubversion/svnrcssvk