TortoiseSVN 是 Subversion 版本控制系統(tǒng)的一個免費開源客戶端,可以超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改以外,版本庫非常像普通的文件服務器。你可以將文件恢復到過去的版本,并且可以通過檢查歷史知道數(shù)據(jù)做了哪些修改,誰做的修改。這就是為什么許多人將 Subversion 和版本控制系統(tǒng)看作一種“時間機器”。
定義
版本控制是管理信息修改的藝術(shù),它一直是程序員最重要的工具,程序員經(jīng)常會花時間作出小的修改,然后又在某一天取消了這些修改,想象一下一個開發(fā)者并行工作的團隊 - 或許是同時工作在同一個文件!- 就會明白為什么一個好的系統(tǒng)需要管理潛在的混亂。
某些版本控制系統(tǒng)也是軟件配置管理(scm)系統(tǒng),這種系統(tǒng)經(jīng)過精巧的設計,專門用來管理源代碼樹,并且具備許多與軟件開發(fā)有關(guān)的特性 - 比如,對編程語言的支持,或者提供程序構(gòu)建工具。不過 Subversion 并不是這樣的系統(tǒng);它是一個通用系統(tǒng),可以管理任何類型的文件集,包括源代碼。
歷史
在2002年,Tim Kemp 發(fā)現(xiàn) Subversion 是一個很好的版本控制系統(tǒng),但是沒有好的圖形化客戶端,創(chuàng)建一個作為 Windows 外殼集成的 Subversion 客戶端的創(chuàng)意來自 TortoiseCVS,一個非常類似的 CVS 客戶端。
Tim 學習了 tortoisecvs 的源代碼,將其作為 TortoiseSVN 的基礎,然后開始這個項目,注冊了域名 tortoisesvn,并將源代碼提交到網(wǎng)上。此時 Stefan Küng 正在尋找一個好的免費版本控制系統(tǒng),他發(fā)現(xiàn)了 Subversion 和 TortoiseSVN,由于 TortoiseSVN 還不能夠使用,他加入了這個項目并開始編程。很快他便重寫了大多數(shù)代碼,并且開始添加命令和特性,此時,最初的代碼都已經(jīng)不復存在了。
隨著 Subversion 越來越穩(wěn)定,吸引了越來越多的用戶開始使用 TortoiseSVN 作為他們的 Subversion 客戶端。用戶群增長迅速(每天都持續(xù)增長)。Lübbe Onken 提供了許多漂亮圖標和 TortoiseSVN 的 logo,細心照料網(wǎng)站并且管理翻譯。
2013年6月13日,Wandisco收購TortoiseSVN[dot]Net, TortoiseSVN leader - Stefan Küng加入Wandisco,有了apache subversion領(lǐng)導開發(fā)者Wandisco的支持,TortoiseSVN將會有更多的改進。
特性
下面是一個簡短的特性列表。
可選的網(wǎng)絡層
Subversion 在版本庫訪問方面有一個抽象概念,利于人們?nèi)崿F(xiàn)新的網(wǎng)絡機制,Subversion 的“高級”服務器是 Apache 網(wǎng)絡服務器的一個模塊,使用 HTTP 的變種協(xié)議 WebDAV/DeltaV 通訊,這給了 Subversion 在穩(wěn)定性和交互性方面很大的好處,可以直接使用服務器的特性,例如認證、授權(quán)、傳輸壓縮和版本庫瀏覽等等。也有一個輕型的,單獨運行的 Subversion 服務器,這個服務器使用自己的協(xié)議,可以輕松的用 SSH 封裝。
數(shù)據(jù)處理
Subversion 使用二進制文件差異算法展現(xiàn)文件的區(qū)別,對于文本(人類可讀)和二進制(人類不可讀)文件具備一致的操作方式,兩種類型的文件都壓縮存放在版本庫中,差異在網(wǎng)絡上雙向傳遞。
高效的分支和標簽
分支與標簽的代價不與工程的大小成比例,Subversion 建立分支與標簽時只是復制項目,使用了一種類似于硬鏈接的機制,因而這類操作通常只會花費很少并且相對固定的時間,以及很小的版本庫空間。
維護能力
Subversion 沒有歷史負擔,它由一系列良好的共享 C 庫實現(xiàn),具有定義良好的 API,這使 Subversion 非常容易維護,可以輕易的被其他語言和程序使用。
外殼集成
TortoiseSVN 與Windows 外殼(例如File Explorer)無縫集成,你可以保持在熟悉的工具上工作,不需要在每次使用版本控制功能時切換應用程序。
并且你不一定必須使用 Windows 資源管理器,TortoiseSVN 的右鍵菜單可以工作在其他文件管理器,以及文件/打開對話框等標準的 Windows 應用程序中。你必須牢記,TortoiseSVN 是有意作為 Windows 資源管理器的擴展開發(fā),因此在其他程序可能集成的并不完整,例如重載圖標可能不會顯示。
重載圖標
每個版本控制的文件和目錄的狀態(tài)使用小的重載圖標表示,可以讓你立刻看出工作副本的狀態(tài)。
簡便訪問
Subversion 命令的簡便訪問
所有的 Subversion 命令存在于File Explorer的右鍵菜單,TortoiseSVN 在那里添加子菜單。
因為 TortoiseSVN 是一個 Subversion 客戶端,我們也很愿意為你展示一些 Subversion 本身的特性:
目錄版本控制
CVS 只能追蹤單個文件的歷史,但是 Subversion 實現(xiàn)了一個“虛擬”文件系統(tǒng),可以追蹤整個目錄樹的修改,文件和目錄都是版本控制的,結(jié)果就是可以在客戶端對文件和目錄執(zhí)行移動和復制命令。
原子提交
提交要么完全進入版本庫,要么一點都沒有,這允許開發(fā)者以一個邏輯塊提交修改。
版本控制的元數(shù)據(jù)
每個文件和目錄都有一組附加的“屬性”,你可以發(fā)明和保存任意的鍵/值對,屬性是版本控制的,就像文件內(nèi)容。
安裝
語言包
TortoiseSVN的界面已經(jīng)翻譯成了許多種語言,所以可以下載符合要求的語言包。可以在的翻譯狀態(tài)頁里看到語言包。如果沒有需要的,為什么不加入的團隊并且提交你的翻譯呢?-)
每一種語言包都是一個.exe安裝程序,只要根據(jù)向?qū)н\行安裝程序,當下一次啟動程序時,翻譯就會生效。
拼寫檢查器
TortoiseSVN包括了一個拼寫檢查器,可以檢查提交日志信息,當項目語言不是本地語言時尤其有用,拼寫檢查器使用OpenOffice和Mozilla Application Suite相同的詞典。
安裝程序會自動增加了美國和英國英語詞典。如果想用其他語言,最簡單的方法是簡單地安裝一個TortoiseSVN的語言包。它將安裝合適的詞典文件以對應本地用戶的TortoiseSVN界面。字典將在下次啟動時可用。
或者也可以自己安裝詞典。如果安裝了OpenOffice或Mozilla,可以復制這些詞典,位于那些應用的安裝目錄。否則,需要從網(wǎng)絡上下載必要的詞典文件。
一旦得到了詞典文件,可能需要重命名文件,這樣文件名只包含位置信息,例如:
en_US.aff
en_US.dic
然后把它們復制到TortoiseSVN安裝目錄的bin子目錄,通常情況下,可能是在C:\ProgramFiles\TortoiseSVN\bin。如果不希望弄亂bin子目錄,可以將拼寫檢查文件放置在C:\ProgramFiles\TortoiseSVN\Languages,如果那個目錄不存在,可以自己創(chuàng)建,當下次啟動TortoiseSVN時,就可以使用拼寫檢查器。
如果安裝了多個詞典,TortoiseSVN使用下面的規(guī)則選擇一個。
檢查tsvn:projectlanguage設置,關(guān)于設置項目屬性可以參考“項目設置”一節(jié)。
如果沒有設置項目語言,或者那個語言沒有安裝,嘗試使用對應Windows區(qū)域信息的語言。
如果精確的Windows區(qū)域信息不起作用,可以試一下“基礎”語言,例如將de_CH(Swiss-German)修改為de_DE(German)。
使用技巧
檢出代碼
初次使用TortoiseSVN的時候,需要將服務器的代碼下載到本地,這就是SVN Checkout(SVN檢出)。檢出的步驟如下
第一步,如圖1,創(chuàng)建一個新文件夾作為本地工作目錄(Working directory),可以使用應用名為文件夾名。如,為我的應用vyes創(chuàng)建本 地工作目錄。
第二步,從SVN倉庫檢出(checkout)一個應用的全部版本代碼,如圖2,右鍵–>點擊“SVN Checkout”
在彈出頁面中填寫倉庫URL即可,其它默認參數(shù)即可,如圖3:
Reversion處,“HEAD revision”是指最新版,也可以指定Revision為任意一個版本。
點擊“OK”,出現(xiàn)下載界面,如圖4:
如果一切順利,vyes應用所有版本代碼將會全部出現(xiàn)在剛剛創(chuàng)建的vyes文件夾下文件夾,Log中最后的Revision表示檢出的當前SVN倉庫的代碼版本,1是指vyes的第一個版本,如圖5:
提交代碼
在本地使用你喜歡的編輯器,編輯任意文件,保存后該文件圖標將會出現(xiàn)紅色 感嘆號,表示這個文件修改過,沒有提交,如圖6所示:
剛剛修改過的global層疊樣式表變色了。下面需要提交(commit)最近的更新。在global.css上擊右鍵,出現(xiàn)菜單,選擇“SVN commit”,如圖7:
然后填寫關(guān)于本次更新的日志(log message),這是必填項,否則commit會失敗。如圖8:
當您看到如圖9所示,表明剛才的修改已經(jīng)成功提交,并且前該vyes項目的SVN版本號加1,變成91了。關(guān)于SVN的版本號是全局的,也就是說SVN倉庫中的所有文件變更都共享一個版本號序列,所以如果查看某個文件,或者目錄的log,可以發(fā)現(xiàn)版本號可能并不是依次遞增。
新增文件
在 SVN工作目錄下,對于文件修改,完成后只需要commit就ok了,但對 于新增文件,或者從其它目錄復制進來的文件或文件夾,需要在commit之前需 要做一步add操作,即將文件或文件夾添加到svn工作目錄中來,否則SVN客戶端不認它。具體操作很簡單,如圖10:
然后再如圖7所示,右鍵commit即可,commit之后,在瀏覽器上輸入你的應用地址就能訪問了。
版本發(fā)布
2012年01月16日,TortoiseSVN 1.7.4 發(fā)布。
2012年04月29日,TortoiseSVN 1.7.6 發(fā)布。
2012年06月08日,TortoiseSVN 1.7.7 發(fā)布,SVN客戶端。
2012年08月16日,TortoiseSVN 1.7.8 發(fā)布。
2012年09月11日,TortoiseSVN 1.7.9發(fā)布。
TortoiseSVN 1.7.11發(fā)布
參考資料 >