TortoiseSVN是一款免費開源的版本控制軟件,軟件可以將文件保存在中央版本庫,能記住文件和目錄的每次修改,包括數據做了哪些修改,誰做的修改都可以詳細記錄。TortoiseSVN可以超越時間對文件和目錄進行管理,在需要的時候就可以輕松將文件恢復到過去的某個版本,對編程人員來說功能非常的實用,有需要的朋友趕緊下載使用吧!
TortoiseSVN客戶端使用教程
建立一個工作目錄,命名為 runoob01
runoob01目錄就是你平常用來存放工作檔案的地方。通常我們會等到自己的工作做的一個段落的時候再進行備份。所以我們平常都是在 runoob01 目錄下面工作,等到適當時機在 commit 到 repository 中。
進入創建的目錄在空白處按下右鍵后,選擇 SVN checkout。
接著您可以看到如下的畫面:
首先我們要填入的是 repository(版本庫)的位置,對于 SVN 來說,repository 的位置都是 URL。版本庫 URL 這里填入我們測試的版本倉庫地址 svn://10.0.4.17/runoob01。
接著,稍微看一下 Checkout directory(檢出至目錄),這個字段應該要指向您的 runoob01 目錄。
確認后,按下 OK 按鈕,你應該可以看到如下的訊息窗口。
這樣就表示動作完成。按下 OK 按鈕后,再到您剛剛建立的目錄下。ni將會看到 MyWork 目錄下面多了一個名為 .svn 的目錄(這個目錄是隱藏的,如果您的檔案管理員沒有設定可以看到隱藏目錄,你將無法看到它) 。
如果您要在一個已經存在的 SVN Server 上面 checkout 出上面的檔案,只需要給定正確的 SVN URL 以及要 checkout 目錄的名稱。就可以取得指定的檔案及目錄了。
新增檔案及目錄到 Repository 中 add commit
創建目錄 dir01, 在目錄里新增文件
將新增的文件加入到 SVN 版本控制中,TortoiseSVN 會把準備要加入的檔案及目錄,勾選需要加入的文件。
按下 OK 后,你將會看到如下的訊息窗口:
這個 Add(增加)的動作并未真正的將檔案放到 Repository 中。僅僅是告知 SVN 準備要在 Repository 中放入這些檔案。 此時的文件狀態為:
這些檔案真正的放入到 Repository 中,空白處右鍵選擇 SVN commit(提交) 緊接著,你將會看到如下的窗口出現:
在這里可以清楚地了解到哪些檔案要被 commit 到 repository(版本庫)中。同樣的,如果您有檔案不想在這個時候 commit 到 Repository,你可以取消選取的檔案,這樣他們就不會被 commit 到 Repository 中。在"信息"文本框中可以寫入對本次 commit 的說明。
點擊"確認"后完成 commit 動作,然后你可以到 runoob 目錄中,確定是否所有的檔案 icon 都有如下的綠色勾勾在上面,這樣代表您的檔案都正確無誤的到 repository 中。
更新檔案及目錄 update
由于版本控制系統都是由許多人共同使用。所以,同樣的檔案可能還有人會去進行編輯。為了確保工作目錄中的檔案與 Repository 中的檔案是同步的。建議你在編輯前都先進行更新的動作。
在想要更新的檔案或目錄 icon 上面按下鼠標右鍵。并且選擇 SVN Update。
有時我們需要回溯至特定的日期或是版本,這時就可以利用 SVN 的 Update to revision 的功能。在想要更新的檔案或目錄 icon 上面按下鼠標右鍵。并且選擇 TortoiseSVN->Update to revision。
復制檔案及目錄 branch
很多時候你會希望有另外一個復制的目錄來進行新的編修。等到確定這個分支的修改已經完畢了,再合并到原來的主要開發版本上。舉例來說,我們目前在runoob01/trunk下面有如下的目錄及檔案
現在,我們要為 trunk 這個目錄建立一個 branch。假設我們希望這個目錄是在 D:\runoob01\branch。首先我們可以在 trunk 目錄下面的空白處,或是直接在 trunk 的 icon 下面按下鼠標右鍵選擇 Branch/Tag…(分支/標記)這個選項,您將會看到如下的對話框出現。

請先確認 From WC at URL(從工作副本/URL): 中的目錄是您要復制的來源目錄。接著,在 To URL(至路徑)中輸入您要復制過去的路徑。通常我們會將所有的 branch 集中在一個目錄下面。以上面的例子來說,branch 檔案都會集中在 branch 的子目錄下面。在 To URL 中您只需要輸入您要的目錄即可。目錄不存在時,會由 SVN 幫您建立。特別需要注意的是 SVN 因為斜線作為目錄分隔字符,而非反斜線。 接著在 Log message(日志信息)輸入您此次 branch 的目的為何。按下 OK 就可以了。
如果成功,將可以看到下面的畫面:
按下 OK 就可以關閉這個窗口了。如果您此時立刻去 runoob01 目錄的 branch 子目錄下面,您將會失望的發現在該目錄下面并沒有剛剛指定的目錄存在。這是因為您 runoob01 目錄的部份還是舊的,您只需要在 branch 子目錄下面進行 SVN update 就可以看到這個新增的目錄了。新增的目錄就與原來的目錄無關了。您可以任意對他進行編輯,一直到您確認好所有在 branch 下面該做的工作都完成后,您可以選擇將這個 branch merge 回原來的 trunk 目錄,或者是保留它在 branch 中。
合并動作 merge
假如我們在 branch 分支中對文件進行了修改或增加了文件,要 merge 回 trunk 目錄中,方法很簡單。以上面的例子來說,我們在 D:\runoob01\trunk目錄空白處,按下鼠標右鍵,選擇 Merge(合并):
這個畫面主要分為三個部份,前面的 From: 與 To: 是要問您打算從 Branch 中的哪個版本到哪個版本,merge 回原來的 trunk 目錄中。因此,From 跟 To 的 URL 字段應當都是指定原來 branch 的目錄下。剩下的就是指定要 merge 的 revision 范圍。以上面的例子而言,我們從 Branch 的 Revision 7 開始 merge 到 Branch 下面的最新版本。您可以透過,Dry run 按鈕,試作一次 Merge。這個 merge 只會顯示一些訊息,不會真正的更新到 trunk 的目錄去。只有按下 Merge 按鈕后,才會真正的將 branch 的檔案與 trunk 的檔案合并起來。
如果你確認這次的 merge 沒有問題,您可以直接使用 commit 來將這兩個被修改的檔案 commit 回 SVN repository 上。如果有問題,您可以直接修改這兩個檔案,直到確認 ok 了,再行 commit。
TortoiseSVN客戶端軟件特色
1.可選的網絡層次。
Subversion對訪問版本庫有一個抽象的概念,這有助于人們實現新的網絡機制,Subversion的“高級”服務器是Apache網絡服務器的一個模塊,使用HTTP的變種協議WebDAV/DeltaV通信,這使Subversion在穩定性和交互性方面具有巨大優勢,可以直接使用服務器的特性,如認證、授權、傳輸壓縮和版本庫瀏覽等。還有一個輕型、獨立運行的Subversion服務器,它使用自己的協議,可以很容易地用SSH封裝。
2.資料處理。
Subversion使用二進制文件差異算法展示文件的不同之處,并且對于文本(人類可讀)和二進制(人類不可讀)文件具有一致的處理方式,兩類文件都壓縮保存在版本庫中,差異通過網絡雙向傳遞。
3.分枝和標簽。
分枝和標簽的成本與工程的大小不成比例,Subversion使用一種類似于硬鏈接的機制來創建分支,而Subversion只是在創建分支時復制項目,因此,這種操作所需的時間通常很少,而且時間相對固定,而且版本庫空間較小。
4.維護能力。
Subversion沒有歷史包袱,它是由一系列優秀的共享C庫實現的,有定義良好的API,這使得Subversion易于維護,其他語言和程序也易于使用。
5.總體框架。
TortoiseSVN與windows外殼(如資源管理器)無縫集成,您可以在熟悉的工具上工作,無需每次使用版本控制功能就切換應用程序。而且您不必使用Windows資源管理器,TortoiseSVN的右鍵菜單可以在其他文件管理器、文件/打開對話框等標準Windows應用程序中工作。一定要記住,TortoiseSVN是一個被設計為Windows資源管理器的擴展,所以其他程序集成的可能還不完整,比如無法顯示重載圖標。
6.重載圖標。
每一個版本控制文件和目錄的狀態都用一個小的圖標來表示,讓你立即看到工作拷貝的狀態。
7.方便查閱。
方便地訪問Subversion命令。
在資源管理器的右鍵菜單中存在所有Subversion命令,其中TortoiseSVN添加子菜單。由于TortoiseSVN是一個Subversion客戶端,我們希望向您展示Subversion自身的一些特性:
8.目錄版本管理。
CVS僅能跟蹤單個文件的歷史記錄,但Subversion實現了一個“虛擬”文件系統,它可以跟蹤整個目錄樹的修改,并且文件和目錄都有版本控制,從而在客戶端執行移動和復制命令。
9.原子提交。
提交或者完全進入版本庫,或者一點也沒有,開發人員可以在邏輯塊中提交修改。
元數據的版本控制。每一個文件和目錄都有一組附加的“屬性”,你可以創建和保存任意的鍵/值對,像文件內容一樣版本化。
再加上一點吧。
