轉戰 Subversion – cvs2svn 注意事項
November 26, 2006 (Sunday)
Subversion 在 branches/tags 的表現上比 CVS 來得優異,但由 CVS 轉到 Subversion 其實不是一件小事。我使用 cvs2svn 去完成了這件事,環境方面,是在 Win32 的 CVSNT 轉入到 Subversion 1.4,以下提出一些要注意的地方:
- 基本上 cvs2svn 官方就說了不 support CVSNT,所以果程只能自求多福,但一般而言應該還是很有機會成功啦。
- 在 Win32 環境除了下載解壓 cvs2svn,(解壓出來的目錄以下稱 “cvs2svn home”) 還需要:
- Python 2.2 以上
- GNU sort (Win32 版本)
- 解開後 /usr/local/wbin 下有個 sort.exe,copy 到 “cvs2svn home”
- RCS (基本上在 Win32 就不要這個了,如果你很堅持要試試 RCS 那就用吧
- 原則上不要直接去操作你的 CVS repository,把 repository copy 一份,然後也掛到 CVSNT 的 repo 下,由 copy 出來的那份去轉,以免出事了連 CVS 的 repository 都完了。
- 確定 CVSNT 的 server / lock server 都已啟動,同時在 windows command line 下輸入指令 “cvs -version” 以確定 cvs client 的版本跟 CVSNT lock server 的版本一樣 (若不一樣請注意環境變數的 PATH,要把預設的 cvs.exe 弄成是 CVSNT 所付的)。
- 如果要直接轉入 Subversion,確定 Subversion server 啟動
- 執行指令,在 Windows 環境下,指令到 cvs2svn home 目錄下以 “python cvs2svn –options=PATH” 的方式執行。
- 基本上 Win32 下用 RCS 有可能有問題,所以必需用 –use-cvs
- 建議先做出 dump file,所以用 –dumpfile=PATH
- 如果當初的 commit message 有中文,請用 –encoding=UTF-8 –encoding=Big5
- 綜合以上,指令大概是 “python cvs2svn –use-cvs –encoding=UTF-8 –encoding=Big5 –dumpfile=D:\myProject.dump D:\myCVSRepo”
- cvs2svn 可能會在有些檔案過不了,我的做法是先拿掉那個檔案,等全體都過了再回來想辦法
- 如果是 branch/tag 不清楚的問題,它會叫你用 –force-branch / –froce-tag 來解決
- 順利完成 dump file 後,建立 Subversion 的 repository 並匯入 dump file,到這裡應該就不會有問題了,dump file 完成其實 cvs2svn 已經功成身退,剩下的是由 Subversion 的工具去完成
- svnadmin create mySvnProject
- svnadmin load D:\SvnRepos\mySvnProject <D:\myProject.dump
- 回頭來看如果在 parse 檔案出問題的情況,我們可以把檔案移到一個地方,然後只跑那個檔案的 cvs2svn 來仔細看錯誤訊息。要解決問題,可能需要對 RCS file format 有點了解。不過我猜大體上會是一些 branch 跟 tag 亂掉的問題,只要把有問題的地方砍掉其實應該就可以了。單跑一個檔時可以加入 –dry-run 參數就不會建 dump file 或直接建進 subversion。
- 確定錯誤檔已經處理好就把它加回去原本的 CVS repo,再跑一次 cvs2svn (整份)。因為之前已經成功轉出,如果有要調參數也都調好了,所以這次想必很順利,只是時間的問題罷了。
- 別忘了用 svn 的 client 確定一下轉出來的東西
- 最後,這裡有 Apache Software Foundation 的轉出流程,除了備份之外,把 CVSNT 的帳號全鎖成 read-only,確保在轉出時沒有新的 commit 也是很重要的
cvs2svn 是一個不容易的過程,也有風險。但是如果不找個機會下決心去轉,日後東西愈來愈多只會更難做。如果你在看這篇看到這裡大概真的需要做這件事了,在此祝你一切順利!
technorati tags:CVS, SVN, Subversion, cvs2svn, CVSNT
Blogged with Flock
Entry Filed under: Technologies, 技術. .
3 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1.
Mark | February 17, 2007 (Saturday) at 3:24
可以試試用 SVK 來轉,不過你要用 SVK 1.08.
目前我只有在 linux 下試成功。
Mark
2. DNASPIRIT WebLOG » Blog Archive » CVSNT轉到Subversion | May 25, 2007 (Friday) at 16:33
[...] CVS2SVN就是相當合適的一個工具,他是由發展Subversion的同一個地方出來的,不過事實上他並不支援cvsnt,但是不乏成功的例子,如這邊。所以我還是決定嘗試一下,初步的結果是轉的過去,不過有出現許多的問題,就之後再討論。 [...]
3. Subversion 資源整理 [JeffHung.Blog] | May 29, 2007 (Tuesday) at 16:37
[...] 的心得筆記《版本控制系統:svn(subversion)》簡單介紹 Subversion 使用方法。《轉戰 Subversion – cvs2svn 注意事項》尤其著重介紹如何與 cvsnt 搭配使用。各平台的 Subversion 安裝方法《用 [...]