大家都知道SVN吧,做軟體的應該都知道版本管理的重要性,現在軟體開發都是團隊開發的,一個好的版本管理工具對於開發來說,必不可少。
當然,版本管理的工具有不少,有CVS,SVN等。這這裡我選擇SVN。CVS貌似對Java來說效果不錯,但是SVN是並資料列版本設定,個人覺得,SVN比較好~~
那麼,什麼是SVN呢,什麼又是TortoiseSVN?
我們一般稱伺服器端的為SVN用戶端的為TortoiseSVN。公司中一般會有專人搭建SVN,而開發人員只需要使用TortoiseSVN就可以了。
TortoiseSVN 是一個 Windows 下的版本控制系統
Apache Subversion 的用戶端工具。就是說,TortoiseSVN 常年管理檔案和目錄。檔案儲存體於一個中央版本庫中。版本庫就像一個常見的檔案伺服器,除了它儲存你對檔案和目錄所有的改變。這一特性使得你可以恢複檔案的舊版本並查看曆史-誰在什麼時間如何進行的修改。這就是為什麼很多人認為 Subversion 和版本控制系統是一種“時間機器”。
某些版本控制系統也是軟體組態管理(SCM)系統,這種系統經過精巧的設計,專門用來管理原始碼樹,並且具備許多與軟體開發有關的特性 - 比如,對程式設計語言的支援,或者提供者構建工具。不過 Subversion 並不是這樣的系統;它是一個通用系統,可以管理任何類型的檔案集,包括原始碼。
TortoiseSVN 的特性
外殼整合、重載表徵圖、圖形化使用者介面、Subversion 命令的簡便訪問、目錄版本控制、原子提交、版本控制的中繼資料、可選的網路層、一致的資料處理、高效的分支和標籤
如何安裝 TortoiseSVN呢?
先登入官網:http://tortoisesvn.net/下載最新版
TortoiseSVN 以簡單易用的安裝包的形式發布。雙擊安裝檔案並按照提示操作。安裝檔案會照顧其餘的事情。安裝結束後不要忘記重啟電腦。
使用之前需要先理解一些基本概念:
-
版本庫
-
Subversion 使用集中的資料庫,它包含了所有的版本控制檔案及其完整曆史。這個資料庫就是版本庫。版本庫通常位於運行 Subversion 伺服器的檔案伺服器上,向 Subversion 用戶端(例如 TortoiseSVN)提供需要的資料。如果只備份一個東西,請備份版本庫,因為它是你資料的主副本。
-
工作複本
-
這是實際工作的地方。每一個開發人員在自己的電腦上都有屬於自己的工作複本,有時可以將其理解為沙箱。你可以將最新的版本從版本庫上取下來,在本地的副本上工作而不影響其他人,如果對更改滿意就可以將其提交到版本庫中。
Subversion 工作複本不包含項目的曆史, 但是它儲存了你修改前的本件的副本,就像這些檔案在版本庫中的狀態一樣。這意味著你可以輕而易舉準確檢查出都做了哪些改動。
語言套件:
標準的安裝包是只支援英文的,但是你可以在安裝好之後。下載分別的安裝包(language packs)以及拼字詞典(spell check dictionaries)。
解決衝突:
-
檔案衝突
-
當兩名(或更多)開發人員修改了同一個檔案中相鄰或相同的行時就會發生檔案衝突。
-
樹衝突
-
當一名開發人員移動、重新命名、刪除一個檔案或檔案夾,而另一名開發人員也對它們進行了移動、重新命名、刪除或者僅僅是修改時就會發生樹衝突。
分支/標記:
合并
分支用來維護獨立的開發支線,在一些階段,你可能需要將分支上的修改合并到主幹,或者相反。
因為分支與合并很複雜,所以在你開始使用之前,請先理解它們是怎麼工作的。強烈建議你閱讀《使用 Subversion 進行版本管理》的分支與合并章節,它給出了全面的描述,和許多使用舉例。
下一個需要注意的地方是,合并總是在工作複本中進行。如果你想要合并修改到分支,你必須檢出該分支的工作複本,並且從這個工作複本使用TortoiseSVN →合并...來調用合并嚮導。
通常來說,在沒有修改的工作複本上執行合并是一個好想法。如果你在工作複本上做了修改,請先提交。如果合并沒有按照你的想法執行,你可能需要撤銷這些修改,命令SVN 還原 會丟棄包含你執行合并之前的所有修改。
這裡有三個處理方法稍微不同的用例,如下所述。合并嚮導的第一頁會讓你選擇你需要的方法。
-
合并一個版本範圍
-
這個方法覆蓋了你已經在分支(或者主幹)上做出了一個或多個修改,並且你想將這些修改應用到不同分支的情況。
你要 Subversion 做如下事情: “計算[從]分支 A 的版本 1 [到]分支 A 的版本 7 所需的修改,並將這些改變應用到(主幹或分支 B 的)工作複本。”
-
複興分支
-
這個用例覆蓋了這種情況,當你象《Subversion手冊》裡討論的那樣,建立了一個新特性分支。所有主乾的修改都要每周一次合并到新特性分支,等新特性完成後,你想將它合并到主幹。因為你已經保持了新特性分支和主幹同步,所以除了你在分支做的修改,其它部分在分支和最新版本應該是相同的。
這是下面討論的樹合并的特殊情況,它只需要你(通常情況下)想要合并的開發分支的 URL。它使用 Subversion 的合并跟蹤特性來計算正確的版本範圍,並且執行附加的檢查來確保分支按照主乾的修改進行了完整的更新。這樣會確保你不會意外的撤銷提交內容,這些內容是其他人在你上次同步修改後提交到主乾的。
合并之後,分支的所有開發被完整的合并到主開發版本。現在的分支已經是多餘的,可以刪除。
一旦你執行了複興合并,你就不應該繼續使用它來進行開發。這樣做的原因是,如果過後你試圖再次對現有的分支與主幹進行同步,合并跟蹤將會你的複興合并視為未合并到分支的主幹修改,並且試圖將分支到主乾的合并再合并回分支!解決方案很簡單,從主幹建立一個新的分支來進行下一階段的開發。
-
合并兩個不同的樹
-
這是複興合并的通用情況。你要 Subversion 做如下事情: “計算[從]主乾的最新版本[到]分支的最新版本所需要的修改,並將這些修改應用到(主乾的)工作複本。”最終結果就是主幹看起來與分支一模一樣。
表徵圖重載:
svn還有好多需要學習的東西。大家可以查看它的協助文檔,協助文檔好詳細啊。