這就是顛覆的工作原理。您通過檢查或切換到分支來使用分支。
REPO_ROOT
├── branches
│ ├── feature1
│ └── feature2
├── tags
└── trunk
您不想簽出REPO_ROOT。您想結算子目錄,如/trunk
或/branches/feature1
。您可以切換到不同的分支這樣的:
svn switch ^/branches/feature2
可以從這樣的主幹創建一個新的分支:
svn cp ^/trunk ^/branches/newfeature
這並不意味着文件是在倉庫裏重複。新分支有點像文件系統中的符號鏈接,因爲它不會重複任何內容,但Subversion有自己的方法來實現這種效率。
如果簽出整個REPO_ROOT,內部存儲庫結構將作爲常規文件系統在您的計算機上重新創建,這將是巨大的。人們不這樣使用Subversion。你總是檢查你想要的分支。
UPDATE
當你創建一個回購協議,將有一個這樣的物理目錄結構:
$ svnadmin create myrepo
$ tree myrepo/ -L 1
myrepo/
├── conf/
├── db/
├── format
├── hooks/
├── locks/
└── README.txt
這有沒有關係是版本控制下的結構中,/trunk
, /branches
,/tags
佈局。新的存儲庫中創建完全空白:
# this outputs nothing
svn ls file://$PWD/myrepo
的/trunk
,/branches
,/tags
佈局僅僅是一個慣例。如果你決定使用它,你必須創建自己的佈局,比如像這樣:
$ svn checkout file://$PWD/myrepo mycheckout
Checked out revision 0.
$ cd mycheckout/
$ mkdir -v trunk branches tags
mkdir: created directory `trunk'
mkdir: created directory `branches'
mkdir: created directory `tags'
$ svn add *
A branches
A tags
A trunk
$ svn commit -m 'created standard layout'
Adding branches
Adding tags
Adding trunk
Committed revision 1.
在此之後,我只想垃圾的mycheckout
目錄,然後簽出/trunk
並添加另一個項目文件提交。
此佈局在myrepo
的物理目錄中不可見。只有當您使用回購瀏覽器或使用svn ls URL
命令瀏覽回購內容時纔會看到它。
您可以在此處詳細瞭解所推薦的版本庫佈局:
http://svnbook.red-bean.com/en/1.7/svn.tour.importing.html#svn.tour.importing.layout
沒有,你簽出該項目的「根」,是沒有辦法「改寫」這一點。你可以做的是將你的工作副本切換到'/ trunk'(或你想要的分支/標籤)。標籤和分支是svn中的目錄(與其他一些vcs相反)。 – Wrikken