Tortoise SVN 版本控制常用操作知识
Tortoise SVN 版本控制常用操作知識
Posted on 2010-11-26 23:07 szh114 閱讀(5897) 評論(0) 編輯 收藏今天老大跑過來問我如何把SVN服務(wù)器上的當前版本回退到某一個版本上去,我沒回答上來,很失敗,所以現(xiàn)在整理一下Tortoise SVN的操作知識,當然所有內(nèi)容都來自于網(wǎng)絡(luò),不多廢話:
TortoiseSVN用戶指南中文版(http://www.svn8.com/shouce/tortoisesvn1.5.8/)
?
0:SVN的版本號是怎么回事?
?? ?svn commit?操作可以作為一個原子事務(wù)操作發(fā)布任意數(shù)量文件和目錄的修改。在你的工作副本中,你可以改變文件內(nèi)容,創(chuàng)建、刪除、改名和復制文件和目錄,然后作為一個整體提交。
?? ?在版本庫中,每次提交被當作一次原子事務(wù)操作: 要么所有的改變發(fā)生,要么都不發(fā)生,Subversion 努力保持原子性以應(yīng)對程序錯誤、系統(tǒng)錯誤、網(wǎng)絡(luò)問題和其他用戶行為。每當版本庫接受了一個提交,文件系統(tǒng)進入了一個新的狀態(tài),叫做版本,每個版本被賦予一個獨一無二的自然數(shù),一個比一個大,初始修訂號是 0,只創(chuàng)建了一個空目錄,沒有任何內(nèi)容。
?? ?可以形象的把版本庫看作一系列樹,想象有一組版本號,從 0 開始,從左到右,每一個修訂號有一個目錄樹掛在它下面,每一個樹好像是一次提交后的版本庫“快照”。
不像其它版本控制系統(tǒng),Subversion 的版本號是針對整個目錄樹的,而不是單個文件。每一個版本號代表了一次提交后版本庫整個目錄樹的特定狀態(tài),另一種理解是版本 N 代表版本庫已經(jīng)經(jīng)過了 N 次提交。當 Subversion 用戶討論“foo.c的版本 5”時,他們的實際意思是“在版本 5 時的foo.c”。需要注意的是,一個文件的版本 N 和 M 并不表示它必定不同。
?? 需要特別注意的是,工作副本并不一定對應(yīng)版本庫中的單一版本,他們可能包含多個版本的文件。舉個例子,你從版本庫檢出一個工作副本,最新的版本是 4:
calc/Makefile:4 integer.c:4 button.c:4?? 此刻,工作目錄與版本庫的版本 4 完全對應(yīng),然而,你修改了?button.c?并且提交之后,假設(shè)沒有別的提交出現(xiàn),你的提交會在版本庫建立版本 5,你的工作副本會是這個樣子的:
calc/Makefile:4 integer.c:4 button.c:5?? 假設(shè)此刻,Sally 提交了對?integer.c?的修改,建立修訂版本 6,如果你使用?svn update?來更新你的工作副本,你會看到:
calc/Makefile:6 integer.c:6 button.c:6?? Sally 對?integer.c?的改變會出現(xiàn)在你的工作副本,你對?button.c?的改變還在,在這個例子里,Makefile?在 4、5、6 版本都是一樣的,但是 Subversion 會把?Makefile?的版本設(shè)為 6 來表明它是最新的,所以你在工作副本頂級目錄作一次干凈的更新,會使所有內(nèi)容對應(yīng)版本庫的同一修訂版本。
?
1:如何查看SVN上當前代碼庫的最新版本號是多少?
?? ?打開右鍵菜單中的show log,然后看到一系列版本更新歷史,最上面的那一行,即是最新版本號,所謂的head revision。
?
2:如何查看本地SVN管理的代碼庫的當前版本號是多少?
?? ?打開右鍵菜單中的show log,然后看到一系列版本更新歷史,顯示為粗體的那一行即你本地當前的版本。
?
3:如何將本地代碼庫的版本回退到某一個舊版本?
?? ?打開右鍵菜單中的update to revision 在彈出的對話框中進行版本號指定即可,如果選擇head revision則更新為最新版本。
?
4:如何將服務(wù)器上的版本回退到某一個舊版本?
?? ?將服務(wù)器上的版本回退到某一個舊版本我還沒找到什么比較好的辦法,現(xiàn)在的笨辦法是先更一個舊版本到本地,然后沒辦法直接COMMIT上去,得先把整個文件夾下面的所有.SVN文件全部清除掉,然后覆蓋本地一個版本,再進行COMMIT。
?
5:TortoiseSVN的export 和check out 有什么區(qū)別?
、新建一個空的文件夾,右鍵點擊它,可以看到TortoiseSVN菜單以及上面的SVN Checkout。?
、不用管這個Checkout,我們選擇TortoiseSVN菜單下的Export...,接著它會讓你輸入url。?
、比如輸入【迷宮探寶】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk/?
、其他選項不需要更改,Omit externals不要勾選,HEAD Revision選中表示最新的代碼版本,接著點擊OK即可將代碼導出到這個目錄中。?
而check out 意思 簽出,雖然和Export的效果一樣是把代碼從服務(wù)器下載到本地,但是Checkout有驗證的功能,Checkout到某處的代碼,將會被TortoiseSVN監(jiān)視,里面的文件可以享受各種SVN的服務(wù)。?
?
6:每次commit 代碼需要注意哪些問題?
如果你更新了目錄中的文件,提交代碼需要用到commit功能,commit的功能不僅僅是上傳,他會和服務(wù)器上面的文件進行對比,假如你更新了某個文件而服務(wù)器上面也有人更新了這個文件,并且是在你checkout之后做的更新,那么它會嘗試將你的更新和他人的更新進行融合(merge),假如自動merge不成功,那么報告conflict,你必須自己來手動merge,也就是把你的更新和別人的更新無沖突的寫在一起。?
commit的時候,最好填寫Log信息,這樣保證別人可以看到你的更新究竟做了寫什么。這就相當于上傳文件并且說明自己做了那些修改,多人合作的時候log非常重要。?
TortoiseSVN的commit只會上傳原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右鍵點擊文件選擇Add,然后文件上面會出現(xiàn)一個加號,在下次commit的時候它就會被upload并且被標記為綠色對勾。沒有綠色對勾的文件不會被commit。?
?
7:本地那些花花綠綠的圖標都分別代表什么意思?
一個新檢出的工作副本使用綠色的對勾做重載。表示 Subversion 狀態(tài)正常.
在你開始編輯一個文件后,狀態(tài)就變成了已修改,而圖標重載變成了紅色感嘆號。通過這種方式,你可以很容易地看出哪些文件從你上次更新工作副本后被修改過,需要被提交。
如果在更新的過程中出現(xiàn)了沖突,圖標會變成黃色感嘆號。
如果你給一個文件設(shè)置了svn:needs-lock屬性,Subversion 會讓此文件只讀,直到你獲得文件鎖。具有這個重載圖標的文件來表示你必須在編輯之前先得到鎖。
如果你擁有了一個文件的鎖,并且 Subversion 狀態(tài)是正常,這個重載圖標就提醒你如果不使用該文件的話應(yīng)該釋放鎖,允許別人提交對該文件的修改。
這個圖標表示當前文件夾下的某些文件或文件夾已經(jīng)被調(diào)度從版本控制中刪除,或是該文件夾下某個受版本控制的文件丟失了。
加號告訴你有一個文件或目錄已經(jīng)被調(diào)度加入版本控制。但還需要COMMIT一下才行。
This icon shows files and folders which are not under version control, but have not been ignored. This overlay is optional.
這個標志表示文件或文件夾不在版本控制之下。
8:SVN檢出代碼的檢出深度指的是什么?
你可以選擇要檢出的深度,它允許你指定子目錄遞歸的深度。如果你只需要大目錄中的幾個子條目,你可以只檢出最高層目錄,然后遞歸的更新選擇的目錄。
全遞歸檢出完整的目錄樹,包含所有的文件或子目錄。
檢出目錄,包含其中的文件或子目錄,但是不遞歸展開子目錄。
檢出指定目錄,包含所有文件,但是不檢出任何子目錄。
只檢出目錄。不包含其中的文件或子目錄。
保持工作副本指定的深度。此選項不用于檢出對話框,但它是其它所有含有深度配置對話框的默認配置。
9:clean up是什么東東?
?? ? 也許由于服務(wù)器問題,一個Subversion指令不能成功地完成,你的工作副本因此被滯留在一個不一致的狀態(tài)。 那樣的話,你需要在該目錄上使用?→?命令。在工作副本的根目錄使用它是一個好主意。
?? ? clean up還有一個用處就是,如果一個文件的日期改變了但是它的內(nèi)容沒有變, SVN不能知道倒底是不是發(fā)生了變化,除非跟舊文檔做一個逐字節(jié)的比較。如果你有很多文件是這種狀態(tài),那就導致更新操作非常慢,系統(tǒng)響應(yīng)也會受到影響。這時候運行一個clean up就能夠使那些文件的狀態(tài)變?yōu)檎?#xff0c;使得以后的檢查速度變好起來。
一個好習慣:如果項目中引用了其他的第三方的程序集,比如EnterpriseLibrary、FCKEditor等,這時候不要簡單從他們的安裝位置引用,而是在你的解決方案下,添加一個Library的目錄,把需要的程序集復制到這里,然后從Library目錄引用,這樣有什么好處,自己想一想吧!
?
總結(jié)
以上是生活随笔為你收集整理的Tortoise SVN 版本控制常用操作知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序集版本号
- 下一篇: JDBC和Ibatis中的Date,Ti