今天在QQ群裡,有人在打聽Delphi的VSS外掛程式,於是被我B4了一番。正好我最近試用了SVN,感覺很不錯,於是在群裡強力推薦,以致於幾乎被認為是SVN的托兒。-_-|||
事實上SVN的確是我用過的最好的源碼管理工具,雖然我用過的這類工具並不多,只有VSS、CVS和SVN,其它像PVCS、 TeamSource、ClearCase之類的只有耳聞,因為它們都是商業產品,並且通常用於管理大型的項目,沒有機會試用,所以也不知道它們如何。 VSS是我四年前在公司裡用過的最早的一款源碼管理工具,不過它實在是太一般了,而且也是商業產品。所以除了公司裡工作需要,我自己是不用的。從那公司出來以後,我試用了CVS,這才開始對自己的源碼進行管理。作為OSS圈裡元老級的源碼管理工具,CVS有多強我不用再多說。但是現在SVN這顆新星已經漸漸要蓋過CVS的光芒了,可見SVN是有自己殺手鐧的。還有一點很重要的就是:它也是一個開源免費的軟體。
SVN全名Subversion。SVN與CVS一樣,是一個跨平台的軟體,支援大多數常見的作業系統。本文只討論Windows的情況。其官方網站是:http://subversion.tigris.org(tigris是一個和sourceforge類似的開源網站,與sf不同的是,sf提供的CVS服務,而tigris提供的是SVN服務)。
在介紹SVN的應用前,先討論一下源碼管理的一個重要的基本概念:Repository。Repository 就是源碼的集中存放處,所有修改後提交的源碼就是儲存在這裡,並在其中記錄所有的修改版本,分支版本,版本合并,以及並發修改處理等。傳統的VSS或 CVS都是採用類似C/S的應用方式,有一個獨立的服務端來做這些工作。而SVN則要靈活得多,它支援三種方式:獨立伺服器方式、Web伺服器方式(這是CVS所沒有的)和本文將要著重討論的Local方式。
回到主題上。個人源碼管理是我自己提的一個概念,以區別於團隊開發的源碼管理。本來像VSS、CVS、SVN這樣的工具最主要的功能是用於團隊開發時用的,用於處理源碼修改的版本控制和並發修改衝突。但對於個人開發來說,就不存在並發修改衝突的問題了。但個人開發又存在一些新的問題:一般個人沒有條件搭一個獨立的伺服器來做Repository,所以實際上即使是用了CVS一類,也是服務端用戶端在一台機器上,而且也不需要使用者權限管理這樣的功能。但有時又需要在不同的機器間拷貝源碼作開發,這又帶來版本混亂的潛在風險。而SVN的Local方式可以說是最好的解決方案。
我現在的用法就是:在隨身碟裡建立Repository,然後在每台機器上都裝了SVN,這樣我就不需要一台單獨的Repository伺服器,只要在任一台機器上把隨身碟插上即具備了完整的版本控制功能。
SVN的安裝和使用。
因為本文只討論Windows下的Local方式,所以不需要獨立伺服器或Web伺服器。SVN的用戶端和CVS一樣,也是命令列方式工作。但在Windows平台下,我們有還別的選擇,這就是易用性很好的一個實現:TortoiseSVN(注意:這是一個獨立於SVN的項目,類似於WinCVS與CVS的關係)。其官方網站是:http://www.tortoisesvn.org,下載其安裝程式:TortoiseSVN-1.1.3-UNICODE_svn-1.1.3.msi(這個檔案名稱是指NT/2k/XP版的)。這個整合發布包中包含了Local應用所需要的全部內容。如果想要中文版,還可以下載這個中文語言套件:LanguagePack_1.1.3_zh_CN.exe(這是簡體中文包,BTW:從進度上看,繁體中文的完成度還要高些:P)。至於其它的如獨立伺服器方式,Web伺服器方式,命令列方式,Python支援等,都要相應的安裝包提供,可自行參考SVN網站說明下載安裝。
安裝的過程非常簡單,只是安裝完成後必須重啟一下,因為它要整合到Windows的資源管理員中。這也可以算是SVN的又一個大優點(多謝mikeshi指出:CVS也有一個TortoiseCVS,這不算是SVN的優點),雖然CVS也有一個WinCVS不錯,但是它畢竟是一個額外的用戶端,不如TortoiseSVN這麼方便。TortoiseSVN裝好後,只要在資源管理員中任何一個檔案夾中點右鍵,即可出現如所示的菜單(我打了中文包,所以顯示是中文,可以在Settings中選擇任何一種已經安裝的語言套件):
第一步:建立Local Repository
假設現在要開始一個項目,叫做Project1。先在隨身碟(假設為U:)建立一個檔案夾:u:/svn/project1。然後在這個檔案夾上點右鍵,選擇:TortoiseSVN|在此建立檔案庫。有兩種方式供選擇,如:
Berkeley資料庫和本地檔案系統。本地檔案系統方式有點類似於CVS,但實現方式上有所不同。Berkeley資料庫據說是目前最好的嵌入式資料庫解決方案,TortoiseSVN預設選擇BDB方式,推薦。確定建立後稍等一會即會彈出一個提示窗,說明檔案庫建立成功。
第二步:建立工作資料夾
在本地硬碟(如D盤)建立一個工作資料夾:d:/working/project1。然後在這個檔案夾上點右鍵,選擇:SVN取出。顯示如下對話方塊:
其中唯一需要指定的就是檔案庫URL,Local方式是使用file協議。確定後顯示如下對話方塊:
點確定後完成建立工作,在檔案夾中看到一個隱藏的檔案夾:.svn。其中記錄了工作資料夾的一些必要資訊,功能與CVS的CVS檔案夾一樣。一個SVN的工作資料夾的表徵圖上將會多了一個綠色的勾,所有被加入Respository的內容都會在表徵圖上加上這樣的綠勾,
第三步:開始寫程式
現在可以在此工作目錄中建立來源程式檔案或檔案夾。在工作資料夾中的任何檔案或檔案夾(除了.svn檔案夾)的右鍵菜單上都會增加一些項目,分別為工作資料夾、工作資料夾下的子檔案夾、工作資料夾中的檔案、已經提交的檔案的右鍵菜單內容:
從最左邊的菜單和最右邊的菜單上可以看到,SVN/TortoiseSVN支援了CVS的幾乎所有功能,還增加了一些很實用的功能(比如檔案/檔案夾的重新命名,在這CVS裡是最讓人頭疼的問題之一)。這又是SVN的大優點。
如果你的來源程式原來就存在,可以立即匯入到Repository裡:在你原來的來源程式檔案夾上點右鍵,選擇TortoiseSVN|匯入。即可。不過要注意:最好先在TortoiseSVN|設定裡設定排除/忽略樣式(可以設定檔案夾或檔案名稱,支援萬用字元,區分大小寫!!!),或是先刪除不必要匯入的檔案。然後再取出(Checkout)到工作目錄即可。
第四步:將寫好的程式提交到Repository
選擇所有要加入的檔案和檔案夾,然後點TortoiseSVN|加入。將顯示如下對話方塊(以將本文提交為例):
把它們加入Repository,確定後它的表徵圖上將顯示一個“+”號,表示這個檔案已經加入,但還未提交。再在當前檔案夾上點右鍵,選擇SVN提交即可。將顯示如下對話方塊(提交本文,其中的Repository是我實際使用的)
成功提交後,它的表徵圖上也將顯示一個前面所示的那樣的綠勾。
第五步:日常使用
無非是重複前面的加入/提交等操作。如果在其它機器上使用,則需要重新建立工作目錄,並取出(Checkout)Repository中的源碼。如果同時在多台機器上使用,則需要使用SVN更新功能來將此工作資料夾中的內容更新為Repository中的相應版本。
更多的功能請參考線上說明及網站提供的其它文檔資料。
最後祝大家都能體會到SVN所帶來的方便
轉自:http://tech.it168.com/d/2008-06-02/200806022229970_2.shtml