星期三, 1月 31, 2007

[Note]cvs2svn 實戰

我主要是參考這篇:HOWTO: smooth CVS to SVN migration (and back again)
基本上步驟還真的是...很簡單。

目前我先在Ubuntu上試驗,想說先搞定之後,再到 Windows server 上試試看。
首先得安裝cvs2svn
#sudo apt-get install cvs2svn

又,因為 Windows 上用的是CVSNT,我再安裝了CVSNT(是的,Ubuntu有包進去):
#sudo apt-get install cvsnt


接著把 Windows 上的 CVS Repository (除專案目錄之外,CVSROOT目錄也要!這是我踩到的第一個雷,如果你是整個搬,就不會有這困擾。)複製到 Linux 機上的 /work/cvs 放著,然後切換到該目錄下之後,輸入:
#cvs2svn -v -s /svn/my_new_project my_project

  • -v 表示 verbose
  • -s 指定 svn repository 位置,這邊不需要特別先執行 svnadmin create 去建立,cvs2svn會自動建,如果你已經有一份建好的,那麼你得加上 --existing-svnrepos
  • 最後是 cvs repository 位置


cvs2svn就開始跑啦~
過沒多久,cvs2svn告訴我:

ERROR: The command '['co', '-q', '-x,v', '-p1.1', '-kk', 'my_project/aaa/bbb/si_template,v']' failed with exit status: 1
and the following output:
co: my_project/aaa/bbb/si_template,v:28: unknown character `_'
co aborted


這個問題卡了我很久,我找不到原因。後來找到這篇討論串:error encountered with co: unknown character '_',最後解法是使用 --use-cvs,也就是不要用 rcs 指令去處理 CVS repository,改用 cvs 指令去處理。

用了這參數以後,原本以為這下就都搞定了,但天不從人願,cvs2svn告訴我另外一個噩耗:
ERROR: The command '['cvs', '-q', '-R', 'co', '-r1.1', '-p', '-kk', 'my_project/my_project.mak']' failed with exit status: 1
and the following output:
cvs [checkout aborted]: Cannot check out files into the repository itself


這問題又再次卡了我很久,我甚至去 trace cvs2svn 的 code...後來發現這完全是因為我的愚蠢所造成...反覆閱讀CVS--Concurrent Versions System - Troubleshooting之後,我終於知道原因,原來我不可以在 /work/cvs 下執行cvs2svn
於是我切到 /work,然後再執行一次就行了。最後指令如下:
cvs2svn --use-cvs -v -s /svn/my_new_project /work/cvs/my_project


參考資料:
後來整個弄完以後又發現的另外一份參考資料~冏:

沒有留言: