SVN目录结构组成深度剖析

本节向大家讲解一下SVN目录结构组成,之前几节我们学习了SVN库的目录结构相信大家应该掌握了,在这里和大家简单介绍一下SVN目录结构组成,欢迎大家一起来学习。

首先看一下下面的这个结构。

wolfwebadmin
├─ProjectManagement
│├─trunk
│├─branches
│└─tags
└─SSO
├─trunk
├─branches
└─tags
大概的说一下,ProjectManagement和SSO是两个项目trunk是开发的主线代码,存放能够运行的正确的代码;程序员如果开发新的程序或者改bug,一般要先branch(SVN的一个功能)trunk目录下的代码到branches目录的一个子目录,在那里对代码进行修改,确认无误后再提交到trunk主线下(但是有的时候为了效率,我们也多人都在trunk目录下开发项目).tags目录可以看做主线代码的快照,比如你做了1.0又做了2.0,那每个不同版本的代码你就做快照放到tags文件夹下了。

一个Subversion版本库实现了一种版本化的文件系统,版本库只是一个包含目录和文件的文件系统,而且它的文件系统是版本化的,并且实现了”廉价”拷贝,让它的这种操作比传统文件系统便宜很多,但是版本库本身还是像一个文件系统:Subversion本身没有特别的目录或名称用来代表trunk或branches,他们只是文件系统的普通目录,这依赖于你给这些目录名和结构的一种意义。也就是说,社区已经采纳了多种普通的布局作为最佳实践,因此一个人可以将其视为推荐方式。如果你的版本库是公共访问的,根据这些习惯,用户可以方便的访问版本库来查找他们所需要的。
有两种常见的SVN目录结构布局:
trunk
branches
tags
第一种布局是版本库包含一个项目或一组紧密联系项目的最佳选择,这个布局非常好用,因为分支与标签整个项目或一组项目会非常简单,只需要一个简单的命令:
svncopyurl://repos/trunkurl://repos/tags/tagname-m“Createtagname”
这可能是最常用的版本库布局,被许多开源项目采用,就像Subversion本身和Subclipse,这是大多数主机站点,如Tigris.org,SourceForge.net和GoogleCode遵循的方法,这些站点的每个项目有自己的版本库。
另一种SVN目录结构布局是针对一个版本库包含不相关项目的最佳选择。
ProjectA
trunk
branches
tags
ProjectB
trunk
branches
tags
在这种布局里,每个项目会存在顶级目录里,然后该目录之下创建trunk/branches/tags,其中与第一种布局相同,这只是将项目放到自己版本库方式的替换,他们都在一个版本库中。Apache软件基金会使用这种布局方式来存放他们的所有项目在一个版本库。
通过这种布局,每个项目都有自己的分支和标签,可以很容易使用一个命令创建分支和标签,就像前面展示的:
svncopyurl://repos/ProjectA/trunkurl://repos/ProjectA/tags/tagname-m“Createtagname”
这种布局可以简单的创建同时包含ProjectA和ProjectB的标签,你可以这样做,但是需要多个命令,你也要决定是否创建一个特别的目录存放这种分支和标签,如果你需要经常这样做,你或许应该考虑第一种SVN目录结构布局。

至于版本库中目录的名称,再说一遍:只是一种习惯,他们在Subversion中没有特别含义。
“trunk”可以认为是项目的开发主线,你可以称之为“main”,”mainline”,”production”或任何你喜欢的名字。
“branches”是放置分支的地方,人们因各种目的使用分支,你或许希望通过特性分支或客户修改分支来隔离你的发布或维护分支等,在这个例子里,你可以在branches创建一层目录,或只是在顶级目录创建多个分支目录。

相关推荐