SVN的一些淺顯看法

svn目錄結構組成的教程

xyz 

├─Project1

│ ├─trunk

│ ├─branches

│ └─tags

└─Project2

│├─trunk

│├─branches

│└─tags

 

大概的說一下, Project1和Project2是兩個項目

trunk是開發的主線代碼, 存放能夠運行的正確的代碼;

程序員如果開發新的程序或者改bug, 一般要先branch(SVN的一個功能) trunk目錄下的代碼到branches目錄的一個子目錄,

在那裏對代碼進行修改, 確認無誤後再提交到trunk主線下(但是有的時候爲了效率, 我們也多人都在trunk目錄下開發項目).

tags目錄可以看做主線代碼的快照, 比如你做了1.0又做了2.0, 那每個不同版本的代碼你就做快照放到tags文件夾下了.

 

以下文字轉自http://rocksun.cn/svn/?p=43 Subversion版本庫佈局

 

很多人問我”什麼是推薦的版本庫佈局?”,”trunk是什麼意思?”或”trunk有什麼意義?”,本文將會嘗試回答這個問題。

 

一個Subversion版本庫實現了一種版本化的文件系統,版本庫只是一個包含目錄和文件的文件系統,而且它的文件系統是版本化的,並且實現了” 廉價”拷貝,讓它的這種操作比傳統文件系統便宜很多,但是版本庫本身還是像一個文件系統:Subversion本身沒有特別的目錄或名稱用來代表 trunk或branches,他們只是文件系統的普通目錄,這依賴於你給這些目錄名和結構的一種意義。

 

也就是說,社區已經採納了多種普通的佈局作爲最佳實踐,因此一個人可以將其視爲推薦方式。如果你的版本庫是公共訪問的,根據這些習慣,用戶可以方便的訪問版本庫來查找他們所需要的。

 

有兩種常見的佈局:

trunk

branches

tags

 

第一種佈局是版本庫包含一個項目或一組緊密聯繫項目的最佳選擇,這個佈局非常好用,因爲分支與標籤整個項目或一組項目會非常簡單,只需要一個簡單的命令:

 

svn copy url://repos/ProjectA/trunk url://repos/ProjectA/tags/tagname -m “Create tagname”

 

這可能是最常用的版本庫佈局,被許多開源項目採用,就像Subversion本身和Subclipse,這是大多數主機站點,如Tigris.org, SourceForge.net和Google Code遵循的方法,這些站點的每個項目有自己的版本庫。

 

另一種佈局是針對一個版本庫包含不相關項目的最佳選擇。

ProjectA

 trunk

 branches

 tags

ProjectB

 trunk

 branches

 tags

 

在這種佈局裏,每個項目會存在頂級目錄裏,然後該目錄之下創建trunk/branches/tags,其中與第一種佈局相同,這只是將項目放到自己版本庫方式的替換,他們都在一個版本庫中。Apache軟件基金會使用這種佈局方式來存放他們的所有項目在一個版本庫。

 

通過這種佈局,每個項目都有自己的分支和標籤,可以很容易使用一個命令創建分支和標籤,就像前面展示的: svn copy url://repos/ProjectA/trunk url://repos/ProjectA/tags/tagname -m “Create tagname” 這種佈局可以簡單的創建同時包含ProjectA和ProjectB的標籤,你可以這樣做,但是需要多個命令,你也要決定是否創建一個特別的目錄存放這種分支和標籤,如果你需要經常這樣做,你或許應該考慮第一種佈局。

 

至於版本庫中目錄的名稱,再說一遍:只是一種習慣,他們在Subversion中沒有特別含義。

 

“trunk”可以認爲是項目的開發主線,你可以稱之爲 “main”,”mainline”,”production”或任何你喜歡的名字。

 

“branches”是放置分支的地方,人們因各種目的使用分支,你或許希望通過特性分支或客戶修改分支來隔離你的發佈或維護分支等,在這個例子裏,你可以在branches創建一層目錄,或只是在頂級目錄創建多個分支目錄。

 

“tags”也不會被Subversion特別對待,他們只是習慣,或許通過鉤子腳本或授權規則進行強制,來指明你創建了一個時間點的快照,通常情況下tags與分支的區別就是tags一旦創建不能修改,你也可以將標籤目錄叫做”releases” ,”snapshots”,”baselines”或任何你喜歡的。 記 住,名稱對你有意義,不是Subversion。

 

最後,Subversion的架構,全局修訂版本經常使得標籤沒有必要,我不知道只是因爲要創建 tag而創建tag有什麼意義,如果你需要在特定時間點重建軟件,你可以通過svn log來確定相關的修訂版本號。

tags對於版本庫的”外部”用戶很有用,或許QA/Release團隊需要執行構建,或許是一個內部開發小組希望在另一個產品使用發佈版本,或是外部用戶或客戶希望根據字面含義從版本庫獲取發佈快照,在這些場景中,創建tag是保證獲取正確代碼的最簡單方法,也需要有好的 交流機制來指明發布快照。 希望本文可以爲你澄清一些問題,讓你更好的理解Subversion是如何工作的。

 最後,我希望指出Subversion版本庫的佈局是可以修改的,你可以一直重組和重構佈局,最壞情況下,會讓用戶調整他們的工作拷貝,但不會讓你從頭再來,你應該自由的改名,移動目錄或任何你希望改變版本庫的方式去做。

 

這個文章頁不錯啊 http://blog.csdn.net/d8111/archive/2008/10/19/3081422.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章