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