TortoiseSVN 簡介
版本控制是管理信息修改的藝術,它一直是程序員最重要的工具,程序員經常會花時間作出小的修改,然後又在某一天取消了這些修改,想象一下一個開發者並行工作的團隊 - 或許是同時工作在同一個文件! - 你就會明白爲什麼一個好的系統需要管理潛在的混亂。
什麼是 TortoiseSVN
TortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,可以超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改以外,版本庫非常像普通的文件服務器。你可以將文件恢復到過去的版本,並且可以通過檢查歷史知道數據做了哪些修改,誰做的修改。這就是爲什麼許多人將
Subversion 和版本控制系統看作一種 “時間機器 ”。某些版本控制系統也是軟件配置管理 (SCM)系統,這種系統經過精巧的設計,專門用來管理源代碼樹,並且具備許多與軟件開發有關的特性 - 比如,對編程語言的支持,或者提供程序構建工具。不過 Subversion 並不是這樣的系統;它是一個通用系統,可以管理任何類型的文件集,包括源代碼。
名詞解釋
檢出工作副本
你的版本庫就像是一臺時間機器,它記錄了所有提交的修改,允許你檢查文件或目錄以及相關元數據的歷史。通過一個 Subversion 命令你可以根據時間或修訂號取出一個過去的版本(或者恢復現在的工作拷貝),然而,有時候我們只是想看看歷史而不想回到歷史.提交修改可以理解爲上傳修改文件的記錄,就是把工作副本里面修改過的文件的記錄上傳到版本庫裏面。
更新工作副本
可以理解爲下載最新版本庫文件的記錄,就是把版本庫裏面最新上傳的文件記錄下載到工作副本里面。
鎖定—修改—解鎖
許多版本控制系統使用“鎖定—修改—解鎖”機制解決這種問題,在這樣的模型裏,在一個時間段版本庫的一個文件只允許被一個人修改。首先在修改之前,Harry 要“鎖定”住這個文件,鎖定很像是從圖書館借一本書,如果 Harry 鎖住這個文件,Sally 不能做任何修改,如果 Sally 想請求得到一個鎖,版本庫會拒絕這個請求。Harry 結束編輯並且放開這個鎖之前,她只可以閱讀文件。Harry 解鎖後,就要換班了,Sally 得到自己的輪換位置,鎖定並且開始編輯這個文件。
TortoiseSVN 安裝
安裝 TortoiseSVN 軟件,鼠標左鍵雙擊”TortoiseSVN-1.5.3.13783-win32-svn-1.5.2.msi”,如圖所示進行安裝。
出現提示,重新啓動計算機安裝完畢。
安裝 TortoiseSVN 遇到問題解決方法
安裝 TortoiseSVN 不成功出現錯誤提示“Service "VisualSVNServer" failed to start. Verifythat you have sufficient privileges to start system services.”,解決方法:這是 Windows Installer 的問題,重新安裝 Windows Installer 即可,如有安裝問題請與管理員聯繫。
TortoiseSVN 使用
檢出工作副本
大多數時候,你會使用 checkout 從版本庫取出一個新拷貝開始使用 Subversion,這樣會在本機創建一個項目的“本地拷貝”。在 Windows 資源管理器裏選擇一個存放工作副本目錄。右鍵點擊彈出右鍵菜單,選擇TortoiseSVN --> SVN Checkout …注:你首先要檢出主線(trunk),這樣版本庫才知道你要接受管理的程序在磁盤哪個目錄。看上去什麼都沒有發生,但實際上這個操作讓版本庫把你的項目目錄納入管理了在你硬盤的適當的位置(例:e:\test),目標文件夾點擊右鍵,選擇 SVN Checkout…然後就會彈出一個 Checkout 選項對話框,輸入遠程項目目錄和本地工作目錄,例:192.168.1.195 服務器的 svn 目錄下的 root 版本庫,遠程項目地址爲:http://192.168.1.195/svn/root/trunk
點擊OK,就會彈出一個遠程服務器要求驗證的對話框,輸入正確的用戶名和密碼。檢出成功後,會在“檢出”目錄出現綠色小勾,“檢出”根目錄也會出現.svn 隱藏目錄。
提交修改
將你對工作副本的修改發送給版本庫,稱爲提交修改。但在你提交之前確保你的工作副本是最新的。你可以直接使用 Tortoiset --> Update,或者,你可以先使用 TortoiseSVN --> 檢查修改看看哪些文件在本地或是服務器上已經有了改動。如果你的工作副本是最新的,並且沒有衝突,你就已經爲提交做好準備了,選擇你要的文件和/或文件夾,然後 TortoiseSVN --> commit ......在你做了修改之後,你可以在項目文件夾下點擊右鍵或者你修改的文件下點擊右鍵,選擇SVN Commit…,這兩者的區別在於,第一個可以一次提交你所做所有文件的修改,而第二個只是提交你所選的文件。
點擊 Commit 之後,就會彈出一個讓你輸入更改 log 的對話框:輸入你所作的修改,然後點擊 OK,就會開始向遠程服務器提交修改。提交文件成功!返回信息!”Finished!”表示文件已成功提交。點擊”OK”按鈕確定更新文件成功。
更新工作副本
更新多個項目在 Subversion 還不是原子操作,所以 TortoiseSVN 會首先找到版本庫的 HEAD修訂版本,然後將所有項目更新到特定修訂版本,防止出現混合修訂版本的工作副本。如果只有一個項目被選中更新,或選中的項目來自不同的版本庫,TortoiseSVN 只會更新到HEAD。在工作副本里面選定文件夾或文件,右鍵菜單 TortoiseSVN ---> Update。
出現一個對話框,輸入正確的用戶名和密碼即可向版本庫提交你想更新文件的信息。更新文件成功!返回信息!”Completed”表示文件已成功更新;”Atrevision:3”表示更新文件版本號爲 3。點擊”OK”按鈕確定更新文件成功。
鎖定
選擇工作副本中你想要獲取鎖定的文件,然後選擇命令 TortoiseSVN ---> Get lock…出現一個對話框,允許你輸入註釋,這樣別人知道你爲什麼鎖定這個文件。註釋是可選的,並且只用於基於 Subversion 的庫。選擇需要鎖定的文件在複選框打勾,點擊“確定”按鈕鎖定選擇的文件。
出現一個對話框,輸入正確的用戶名和密碼即可向版本庫提交你想鎖定文件的信息。鎖定文件成功!返回信息!”Locked by admin”表示文件已被 admin 用戶鎖
定;”alpay_payto.php”表示鎖定文件的名稱。點擊”OK”按鈕確定鎖定文件成功。
釋放鎖定(取消鎖定)
選擇工作副本中你想要取消鎖定的文件,然後選擇命令 TortoiseSVN ---> Release lock…出現一個對話框,選擇需要取消鎖定的文件在複選框裏打勾,點擊“確定”按鈕。
出現一個對話框,輸入正確的用戶名和密碼即可向版本庫提交你想取消鎖定文件的信息。取消鎖定文件成功!返回信息!”Unlocked Finished!”表示文件已被解除鎖
定;”alpay_payto.php”表示解除鎖定文件的名稱。點擊”OK”按鈕確定鎖定文件成功。
TortoiseSVN 語言包安裝
如果有英文不太好的朋友可以安裝TortoiseSVN 語言包支持中文。
如圖所示TortoiseSVN 語言包安裝成功
TortoiseSVN 設置語言選項
安裝完TortoiseSVN 語言包,在空白處單擊鼠標右鍵,在彈出的菜單選擇”TortoiseSVN ---Settings”。如下圖所示,在出現的對話框選擇“Language:中文(簡體)”--- 鼠標左鍵單擊“確定”按鈕。
如圖所示,TortoiseSVN 設置語言成功。
TortoiseSVN 菜單設置
該頁面允許你指定: 在 TortoiseSVN 的主上下文菜單中哪些條目可以直接在鼠標右鍵菜單顯示,哪些在 TortoiseSVN 子菜單顯示。默認情況下很多項未被勾選,只在子菜單顯示。獲得鎖會有一個特別的情況,你可以將其提升到頂級菜單,但是大多數文件不需要鎖定,這樣做只是添加了混亂。然而,一個標記爲 svn:needs-lock 屬性的文件每次編輯前都需要那個操作,所以這個菜單會進入頂級菜單會比較方便。選定這個選項,會使設置svn:needs-lock 屬性的文件的 Get Lock 出現在頂級菜單中。
如下圖所示,TortoiseSVN 子菜單內容按照設置放到右鍵頂級菜單。
其它功能
網頁瀏覽:你可以使用該地址 https://192.168.1.195/svn/root/trunk/ 在網頁上瀏覽項目,同樣需要和前面一樣的密碼。Revert:取消上一次的操作(只針對客戶端,服務端不做改動)
Revision Graph:版本示意圖
Show log:查看版本日誌及不同版本間相互比較
Check for modifications:同服務器上的項目版本進行比較,並可做相應的修改。
小技巧
工作副本下.svn 目錄被刪除了怎麼辦?工作拷貝中的任何一個目錄包括一個名爲.svn 管理區域,通常列表操作不顯示這個目錄,但它仍然是一個非常重要的目錄,無論你做什麼?不要刪除或是更改這個管理區域的任何東西,Subversion 使用它來管理工作拷貝。如果你不小心刪除了子目錄.svn,最簡單的解決辦法是刪除包含的目錄(普通的文件系統刪除,而不是 svn delete),然後在父目錄運行 svn update,Subversion 客戶端會重新下載你刪除的目錄,幷包含新的.svn。