Home > Technologies, 技術 > 轉戰 Subversion – cvs2svn 注意事項

轉戰 Subversion – cvs2svn 注意事項

November 26, 2006 (Sunday) Leave a comment Go to comments

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:, , , ,

Blogged with Flock

Advertisements
Categories: Technologies, 技術
  1. February 17, 2007 (Saturday) at 3:24

    可以試試用 SVK 來轉,不過你要用 SVK 1.08.

    目前我只有在 linux 下試成功。

    Mark

  1. May 25, 2007 (Friday) at 16:33
  2. May 29, 2007 (Tuesday) at 16:37

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: