天天看點

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

[SCM]源碼管理 - TortoiseSVN

 TortoiseSVN的安裝非常簡單,安裝後以windows shell的形式來使用。

一 圖示

TortoiseSVN 重載了檔案和檔案夾的圖示來更好的顯示版本控制的狀态。如下:

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN
[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :一個新檢出的工作副本使用綠色的對勾做重載。表示 Subversion 狀态正常。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :在你開始編輯一個檔案後,狀态就變成了已修改,而圖示重載變成了紅色感歎号。通過這種方式,你可以很容易地看出哪些檔案從你上次更新工作副本後被修改過,需要被送出。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :如果在更新的過程中出現了沖突,圖示會變成黃色感歎号。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :如果你給一個檔案設定了

svn:needs-lock

屬性,Subversion 會讓此檔案隻讀,直到你獲得檔案鎖。具有這個重載圖示的檔案來表示你必須在編輯之前先得到鎖。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :如果你擁有了一個檔案的鎖,并且 Subversion 狀态是正常,這個重載圖示就提醒你如果不使用該檔案的話應該釋放鎖,允許别人送出對該檔案的修改。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :這個圖示表示目前檔案夾下的某些檔案或檔案夾已經從版本控制中删除,或是該檔案夾下某個受版本控制的檔案丢失了。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :加号告訴你有一個檔案或目錄已經加入版本控制。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :此圖示表示改檔案或檔案夾将不被svn進行版本控制,将被忽略,不會出現在commit的對話框中,不會被commit到server。

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

 :此圖示表示檔案或檔案夾還沒有與svn版本控制建立關系,也不在被忽略的list中。

二 右鍵菜單(已經在SVN控制下檔案或檔案夾的右鍵菜單)

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

SVN Update: 用SVN Server Repository的最新的版本來跟新本地的工作副本。

SVN Commit:将對本地副本的修改送出到SVN Server Repository。

TortoiseSVN->Show Log:顯示檔案或檔案夾的修改曆史。

TortoiseSVN->Repo-Browser:浏覽SVN Server Repository或某些檔案夾。

TortoiseSVN->Check For Modifications:檢查本地副本相對于SVN Server的修改。

TortoiseSVN->Reversion Graph: 檢視檔案或檔案夾的版本圖。

TortoiseSVN->Edit Confilit:當你對本地的副本進行修改後,在送出(commit)前需要調用跟新(update)獲得SVN Server Repository上最新的版本,否則不能送出(commit)。此時如果你修改的檔案在Server上已經被别人跟新過,在update後,你修改的 本地的副本的檔案将為沖突(conflit)狀态,這個時候你需要調用edit confilt來進行merge操作,來得到合并後的檔案。 

TortoiseSVN->Resolved:在調用了Edit conflict後,你完成了merge工作,但是要送出(commit)merge的結果,還需要調用resolved來讓SVN知道此檔案的沖突已經被解決了,可以送出了。

TortoiseSVN->Update To Version:跟新本地的副本到指定的SVN Server Repository版本。

TortoiseSVN->Rename:修改檔案或檔案夾名字,其實就是删除原來的,建立一個。必須commit才能反映到SVN Server。

TortoiseSVN->Delete:标記檔案或檔案夾為删除,必須commit才反映到SVN Server。

TortoiseSVN->Revert:在commit前,取消對本地的副本的修改。

TortoiseSVN->Clean Up:也許由于伺服器問題,一個Subversion指令不能成功地完成,你的工作副本是以被滞留在一個不一緻的狀态。 那樣的話,你需要在該目錄上使用cleanup。

TortoiseSVN->Get Lock:使用get lock來鎖定檔案使别人不能跟改。

TortoiseSVN->Release Lock:釋放對檔案的鎖定。

TortoiseSVN->Branth/Tag:branch和tag過程相同,都是在SVN Server上對folder進行新的拷貝,brach一般在braches目錄下,用來進行feature開發。tag在tags目錄下,用來标記特定版本。

TortoiseSVN->Swith: 用來設定你本地副本所針對的SVN Server上的URL位置。對你所針對的branch或truck或tag進行切換。比如一開始在truck,快要release的時候,你需要轉移到 新建立的brach上,這個時候需要使用swith來切換到brach上。

TortoiseSVN->Merge:用來brach間的merge。

TortoiseSVN->Export:從SVN Server将Reporitory或檔案到處到本地,不包含版本資訊。

TortoiseSVN->Relocate: 如果Repository的URL改變,使用relocate。例如SVN Server的IP,協定,或Repository的root改變等。如果隻是在同一Repository的不同braches或tags的切換,使用 swith。

TortoiseSVN->Add:标記檔案或檔案夾為add,當commit後此檔案或檔案夾被加入到SVN Server Repository。

TortoiseSVN->Create Patch:create patch用來打包你對本地副本的修改,然後可以将patch給其他的developer用來review。通過此方式你的修改在送出到SVN Server前與别人共享。

TortoiseSVN->Applay patch:将别人建立的patch與本地的副本進行merge,來檢視别人的修改。

三 右鍵菜單(還沒有加入SVN控制的右鍵菜單)

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

SVN Checkout:從SVN Server Repository中獲得工作副本到本地。

TortoiseSVN->Create Repository Here: 建立本地的SVN Repository。此時需要在本地一個空檔案夾上右鍵。建立的Repository可以通過file:///d:/mytestproject2來被 TortoiseSVN來通路,或共享後被别的機器上的TortoiseSVN來通路

file://ServerName/mytestproject2。

此種方式不需要再安裝其他的svn server了,同時也不支援http通路。一般用來對本機的檔案進行版本管理,或小組内共享檔案的版本管理。

TortoiseSVN->Import:将本地的項目,檔案或檔案夾導入到SVN Server Repository。在導入前一般要删除所有建構工程不需要的檔案(臨時檔案,編譯器産生的檔案,例如 *.obj,生成的二進制檔案,...)。

TortoiseSVN->Add To Ignore List: 将檔案或檔案夾加入到ignore list中,ignore list中包含的檔案或檔案夾将被commit所忽略。

四 右鍵拖拽菜單

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

五 TortoiseSVN->Merge

其 中包含三種情況:[所有的merge的結果都反映在本地的工作副本,要想将結果反映到SVN Server Repository,必須對merge後的本地副本送出Commit,同時在merge前要確定你的副本所針對的server的url設定為你将要送出 到的url,可以使用swith來檢視和切換]

1)(Merging a Range of Revisions)merge某個brach或tag上的某個版本或某些版本到本地的工作副本。

2)(Reintegrate a branch)merge某個brach或tag上最新的版本到本地的工作副本。

3)(Merging Two Different Trees)merge某兩個brach或tag上的某些版本或最新版本到本地工作副本。

一般地要完成brach間的integrate需要先進行merge,将結果merge到本地副本,然後再送出本地的副本。 

執行個體: 

1) 從brach到trunk內建

1. 確定目前你的任何的修改都送出;

2. 確定目前工作在trunk上,可以使用swith來檢視和切換到trunk;

3. 跟新目前本地的trunk副本到最新;

4. 在根目錄上TortoiseSVN->merge,選擇 reintegrate a brach;

5. 在merge wizard的對話框2的From url寫入要integrate的brach的全路徑; 

6. 在merge wizard的對話框3中,對merge depeth中選中fully recursive。

7. 在merge wizard的對話框4中,對沖突的檔案edit conflict和mark resolved。

8. 對本地的integrate的結果送出;  

2) 從trunk到brach內建,與從brach到truck內建過程相同,唯一需要注意的是用switch來確定你目前工作在brach上,然後在from url寫入trunk的全路徑。

六 使用TortoiseSVN->create repository here建立本地的SVN Repository

利 用此種方式,可以對本地的檔案夾進行版本管理,如果此檔案夾被共享的話,隻要能通路此共享的人員都可以checkout和commit。此種方式建立簡 單,隻需要安裝TortoiseSVN,調用create repository here,不需要安裝svn server,也正是因為沒有svn server安裝,是以不支援http,https的通路,隻能通過file:///來通路。 

1)建立檔案夾,例如c:\MySVNRepository;

2)  在建立的空檔案夾上右鍵,調用TortoiseSVN->create repository here即完成了local repository的建立;

3)可以使用TortoiseSVN->import向此repository導入需要版本管理的檔案;

4)可以使用TortoiseSVN->checkout,commit等修改檔案;

5)可以使用TortoiseSVN->ropo browser來在本地檢視repository,如下:

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

6)如果被共享的話,其他的機器可以使用TortoiseSVN->ropo browser來檢視repository,如下: 

[SCM]源碼管理 - TortoiseSVN [SCM]源碼管理 - TortoiseSVN

七 下載下傳

http://www.collab.net/downloads/subversion/

八 參考 

http://svndoc.iusesvn.com/ 

http://thinkinging.com/2007/04/12/creating-a-local-subversion-repository-with-tortoisesvn/ 

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-repository.html#tsvn-repository-create 

繼續閱讀