所有您曾經做過的動作,及其日期與對應的版本都會列在這個窗口上面,只要在你想要的版上面點一下,讓他變成反白,然后按下OK。這個版本會自動填入Update窗口中的Revision字段中。您只要再按下一次OK,這個版本會被取出來到您的硬盤中。
6,Copy/Tag/Branch/Release檔案或目錄
Branch,要產生一個分支,以區別與trunk不同的開發。 Tag,要形成一個標記,表示重要的milestone。Release,表示一個已經正式的release的紀錄。所謂的Tag或Release是一個特別的版本,因為這個版本可能有特別的意義。Tag與Release的作法與Branch完全相同,只是Branch可能會需要merge回原來的trunk中,而tag及 release大部分都不需要merge回trunk中;旧,SVN只有目錄的概念,并沒有什么 Tag的用法。所以您會看到在SVN的選單上面,Branch與Tag是同一個項目。我們在Trunk上面,按鼠標右鍵,選擇Branch/Tag的項目,在Tag目錄下面建立了一個1.0的目錄(在Tag目錄下面update一下,才能看到它)。 Branch、Tag、Release都只是將指定的 Trunk版本復制一份到另外一個目錄去,至于這個目錄要叫Branch還是叫Release,SVN根本不管。所以您也可取其它的目錄名稱。不過Branch、Tag、Release已經是SVN上面約定成俗的名稱。所以除非您知道自己為何這樣做,否則好還是follow這個命名原則,以免后面新加入的人看不懂。同樣的道理Trunk也只是一個約定成俗的名稱,不一定要叫Trunk。只是大家看到Trunk目錄會知道這里面放的是主要的開發主干。
首先確認您要處理的檔案或目錄是Repository中新的版本。在要處理的目錄或是檔案上按鼠標右鍵,選擇TortoiseSVN->Branch/Tag/Branch/Release,出現如圖:
其中,From WC at URL:要復制的來源目錄,To URL:輸入您要復制到的路徑。目錄不存在時,會由SVN幫您建立(注意:SVN用斜線作為目錄分隔字符而非反斜線)。Log message:輸入目的即可。在復制到的路徑下, SVN update可以看到這個新增的目錄了。
您可以任意對新增的目錄Branch進行編輯,一直到您確認好所有在branch下面該做的工作都完成后,您可以選擇將這個branch merge回原來的trunk目錄,或者是保留它在branch中。 要merge回trunk目錄中,我們在D:workingmy_prj runk目錄空白處,按鼠標右鍵,選擇Merge,看到如下的畫面:
這個畫面主要分為三個部份, From跟To的URL字段指定原來 branch的目錄下。剩下的是指定要merge的revision范圍。按下Merge按鈕后,將 branch的檔案與trunk的檔案合并起來。如果您確認這次的merge沒有問題,可以直接使用commit來將這兩個被修改的檔案commit回repository上。如果有問題,您可以直接修改這兩個檔案,直到確認ok了,再commit。 在To URL處輸入您要的目的地。
7,經典的svn工作流程
所有開發者在開始新的工作之前必須從服務器獲取代碼,然后開發,后解決沖突,提交。所有的版本信息都放在服務器上,如果脫離了服務器,開發者基本上是不可以工作。
1)從服務器下載項目組新代碼。
2)進入自己的分支,進行工作,每隔一個小時向服務器自己的分支提交一次代碼(很多人都有這個習慣,因為有時自己對代碼改來改去,后又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,需要這樣做)。
3)下班時間快到了,把自己的分支合并到服務器主分支上,的工作完成,并反映給服務器。
從流程上看SVN缺點:
1)服務器壓力太大,數據庫容量暴增。
2)如果不能連接到服務器上,基本上不可以工作,看上面第二步,如果服務器不能連接上,不能提交,還原,對比等等。
3)不適合開源開發(開發人數非常非常多,但是Google app engine是用svn的)。但是一般集中式管理的有非常明確的權限管理機制(例如分支訪問限制),可以實現分層管理,從而很好的解決開發人數眾多的問題。
從流程上看SVN缺點優點:
1)管理方便,邏輯明確,符合一般人思維習慣。
2)易于管理,集中式服務器更能保證安全性。
3)代碼一致性非常高。
4)適合開發人數不多的項目開發。