这就是颠覆的工作原理。您通过检查或切换到分支来使用分支。
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