小石頭
          Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
          posts - 91,comments - 22,trackbacks - 0

          CVS 與 Subversion 二三事

          DIrk 發表于 2006-05-14 Sunday

          網上大部分關于 CVSSubversion 的文章一般都只是提到了 Subversion 相對于 CVS 的優點:版本化目錄,原子提交,徹底的版本歷史(文件/目錄的重命名),而對于一些更本質的概念性差別卻很少有人提到。

          對于像我這樣使用 CVS 已經很多年、已經習慣了 CVS 操作的人來說,想要遷移到 Subversion,需要從概念和具體操作上進行如下轉變:

          1、修訂版本號差別:在 CVS 中,修訂版本號是每個文件的,這是因為 CVS 使用 RCS 作為后端;每個文件都在版本庫有一個對應的 RCS 文件,版本庫幾乎就是根據目錄樹的結構創建。而在 Subversion 中,修訂版本號是針對整個目錄樹的,每個修訂號代表了一次提交后版本庫整個目錄樹的特定狀態,另一種理解是修訂號 N 代表版本庫已經經過了 N 次提交。當 Subversion 用戶討論“foo.c 的修訂號 5”的時候,他們的實際意思是“版本庫在修訂號 5 時包含的 foo.c”。
          2、由此引起第二個重大差別:分支和標簽的不同處理方式。在 CVS 中,你可以通過給你的目錄樹(或者單個文件)建立分支或標簽以標記某個時刻的目錄樹狀態,但不管如何處理,從物理目錄上來說,始終是同樣的目錄結構,表面來說看不出差別。而 Subversion 則不同,其不區分文件系統空間和“分支”空間;分支和標簽都是普通的文件系統目錄,這恐怕是 CVS 用戶需要逾越的最大心理障礙。也就是說,如果你在 Subversion 下創建分支或者標簽,事實上是在額外的地方保存了一個版本庫目錄樹的快照(snapshot),事實上,按照 Subversion 文檔的說法,并不是目錄樹的完整復制,采用了更加高效的方法,類似 Unix 下的硬鏈接[hard link]。如果你訪問過采用 Subversion 的開源項目,你會發現這些版本庫都會建立類似 /trunk、/branches 和 /tags 等三個根目錄,然后版本庫主干分支位于 /trunk 目錄下,當你創建分支的時候,會將目錄樹快照保存到 /branches,同樣,標簽會保存到 /tags 中。

          除了這兩點概念上的變動比較大之外,Subversion 在其他方面對 CVS 的兼容操作性還是很強的。

          標簽:cvssubversion

          4 條評論 ?

          1. 理解得不錯,再補充一點就是服務端沒有像cvs那樣完整的倉庫鏡像
            而是只存儲了每次提交的變化內容
            所以cvs checkout最新版要比較快
            而svn查詢更新記錄則更快一些

          2. 第一點我已經慢慢習慣了,現在覺得svn這樣處理是理所當然的,第二點還是不習慣,以前就這個問題,還上過subversion的maillist,用半生不熟的中國英語發過郵件,居然還引來一個作者的多次回應,讓我再看看基本的概念。

          3. 由此看來,svn要比cvs占得空間大得多,不過綜合來看還是進步了不少,值得使用

          4. 其實并不是文件目錄的直接拷貝,手冊解釋說更加接近Unix下的soft link,理解上可能只是一個符號鏈接,并不真的重復存儲數據。

            我們所命定的目標,不是享樂,不是受苦,而是行動,在每一個明天,都要比今天前進一步!
          posted on 2007-03-07 23:12 小石頭 閱讀(645) 評論(0)  編輯  收藏 所屬分類: Subversion
          主站蜘蛛池模板: 鄂尔多斯市| 玉林市| 贵南县| 芦溪县| 容城县| 兰考县| 白城市| 沂源县| 雷州市| 保山市| 仪陇县| 仁怀市| 独山县| 东源县| 延津县| 马鞍山市| 徐汇区| 修水县| 平乡县| 呈贡县| 延津县| 开原市| 玛纳斯县| 易门县| 柘荣县| 盐池县| 铅山县| 宕昌县| 文登市| 张家川| 永泰县| 射洪县| 根河市| 婺源县| 冷水江市| 广西| 阳原县| 宁武县| 根河市| 吕梁市| 花莲市|