天天看點

轉換CVS到subversion

安裝和配置就沒有什麼好說的了。說一些自己的看法和一些注意事項

比起CVS來說确實簡潔多了,加上copy/move的功能,比較符合使用習慣。

對于中文的支援也非常好,而且伺服器能通過SSH協定操作,安全,友善。

用戶端有TortoiseSVN和TortoiseCVS幾乎一樣,沒有過渡時期的痛苦。

是以打算把原來的CVS項目給轉過來。

使用工具:cvs2svn

這個工具是使用python寫的,需要安裝python,我的系統是win2000 Pro,

安裝了python2.2(其實之前用WinCVS就裝過了)。自己把python的路徑加入

到PATH。另外由于轉換需要RCS的指令co,我系統當然沒有,裝了一個

cygwin+CVS,用于替代。我想用windows版本的CVS指令應該也可以。同時

把cygwin的bin也加入到PATH。

指令的參數如下:

--use-cvs 使用cvs指令替代co指令,速度比co要慢

--trunk-only 僅轉主分支,tag和branch不要,否則生成目錄太亂。

--tmpdir=./tmp 指定臨時目錄。

在我自己的項目上運作,結果提示我無法轉化,因為我的log是用的中文

寫的,昏倒。到他網站mails-list總算找到問題,需要參數:

--encoding=cp936

在次運作,結果還是不行!

在次查找,原來是python不支援cp936,更新到python3.4解決。

項目挺多,轉的時候隻有等待了,順便看看他的文檔。

着重看了自己關注的問題,ignore list,項目管理(指令,權限,樹結構)

ignore,發現比較麻煩,需要自己寫配置檔案,或者加入到系統資料庫!

配置檔案在%AppData%/Subversion的config檔案中。後來發現TortoiseSVN

裡面自己帶了配置的地方,就用這裡了,還是習慣用GUI界面:-)

管理指令就是svnadmin,用法也挺簡單,create建立一個倉庫就好了。一些

常用指令如下:

create  建立倉庫

deltify 删除倉庫

dump    列印倉庫資料到标準輸出,用來在版本更新用

recover 修複倉庫,一些異常情況回照成倉庫死鎖

倉庫結構和CVS有差別,因為SVN的tag和branch是用copy完成的,生成一個單獨

的目錄,不象CVS僅是一個标記。基本推薦兩種方式:

root--trunk

      --項目0..n

    --tags

      --項目0..n

    --branches

      --項目0..n

或者

root--項目0..n

      --trunk

      --tags

      --branches

個人喜歡後一種,還有一個特别注意的是,CVS基本上把所有的項目放到一個

倉庫,他們之間的版本号互相不影響,但是SVN不一樣!他是一個倉庫公用一個

全局的數字版本号!每個項目的送出(tag/branch/del等操作)都會+1,比如一個

項目非常活躍,倉庫版本将會非常大,但是另外一個項目根本沒有更新過,但是

一旦送出,版本号會非常高。不過不影響使用,畢竟是根據項目來檢視日志等

操作。

SVN還帶有一個特殊的東西,屬性。可以給項目/目錄/檔案設定,而且也象項目

檔案一樣,會儲存的,有曆史記錄的。比如項目釋出了,加一個release "xxx"

就可以了,可以用來替代tag了。還有一些特殊的屬性,以svn:開頭,svn:log表

示曆史記錄,一般情況是不能修改的,但是如果有管理者的支援,可以把以前的

送出的錯誤提示修改掉。

SVN也和CVS一樣,可以在送出等操作的時候檢查/添加自己的一些處理,這個在倉

庫的目錄hooks中,其中就有支援svn:log的設定參數。