一个人不应该依附在其他人身上,一个人应该首先自力更生。你应该自己能够独立,能够安顿你自己,那你就不会害怕了。你爱你自己的话,别人不能不爱你吧。

svn目录结构组成的教程

上一篇 / 下一篇  2009-09-29 17:20:07 / 个人分类:SVN

51Testing软件测试网C8tv5z%J(@"|

wolfwebadmin51Testing软件测试网Y!E U$n Bd)t
├─ProjectManagement
M*I+}2tu0│  ├─trunk
_ _\T6Ab*Qx9WK0│  ├─branches51Testing软件测试网`;DX8{G&MWye
│  └─tags
-p'o.R8Ws#I-F]0└─SSO
7a3V%U$wF-v7\.c&j;u|0    ├─trunk51Testing软件测试网2JC!kN7Z9n
    ├─branches
O0~#h([`geF0    └─tags
m,X$U2pD3N;t5g0大概的说一下, ProjectManagement和SSO是两个项目 trunk是开发的主线代码, 存放能够运行的正确的代码; 程序员如果开发新的程序或者改bug, 一般要先branch(SVN的一个功能) trunk目录下的代码到branches目录的一个子目录,在那里对代码进行修改, 确认无误后再提交到trunk主线下(但是有的时候为了效率, 我们也多人都在trunk目录下开发项目). tags目录可以看做主线代码的快照, 比如你做了1.0又做了2.0, 那每个不同版本的代码你就做快照放到tags文件夹下了.

&z~X|y(\051Testing软件测试网k[DTe#m)\8_ {

 
%rD6eVv h0一下文字转自http://rocksun.cn/svn/?p=43Subversion版本库布局 很多人问我”什么是推荐的版本库布局?”,”trunk是什么意思?”或”trunk有什么意义?”,本文将会尝试回答这个问题。51Testing软件测试网3[$z#EX,\y/uj

J]#O'w!S5b,]7b0一个Subversion版本库实现了一种版本化的文件系统,版本库只是一个包含目录和文件的文件系统,而且它的文件系统是版本化的,并且实现了” 廉价”拷贝,让它的这种操作比传统文件系统便宜很多,但是版本库本身还是像一个文件系统:Subversion本身没有特别的目录或名称用来代表 trunk或branches,他们只是文件系统的普通目录,这依赖于你给这些目录名和结构的一种意义。

1\?N8M_Q0

8AL)F/c4Q4B{+b*P"w0也就是说,社区已经采纳了多种普通的布局作为最佳实践,因此一个人可以将其视为推荐方式。如果你的版本库是公共访问的,根据这些习惯,用户可以方便的访问版本库来查找他们所需要的。51Testing软件测试网#a4r"UvO3~?

51Testing软件测试网]^}/W9S!Z.U2~

有两种常见的布局:

w p'?e7kL:B@051Testing软件测试网:C HR6@Tc9g a b,y

trunk
:uL/Z)Pp(Nc0branches51Testing软件测试网,~Y3r b4JV'LG
tags
4Q'J*[c"Q\0第一种布局是版本库包含一个项目或一组紧密联系项目的最佳选择,这个布局非常好用,因为分支与标签整个项目或一组项目会非常简单,只需要一个简单的命令:

-}#LE3y r+~ E7j0

/z!Tq Y A#h|3c+}0svn copyurl://repos/trunkurl://repos/tags/tagname-m “Create tagname”51Testing软件测试网 Bm~ B5X"_ck!z u

%Z!B!P K*HI1fj0这可能是最常用的版本库布局,被许多开源项目采用,就像Subversion本身和Subclipse,这是大多数主机站点,如Tigris.org, SourceForge.net和Google Code遵循的方法,这些站点的每个项目有自己的版本库。

#~ Rs E$ZkN0

%]c8N8{d,z_0另一种布局是针对一个版本库包含不相关项目的最佳选择。51Testing软件测试网.\g@HWZF|

4}E(R!i v/^0ProjectA51Testing软件测试网2D9m&A(]~6Z,?r
   trunk
A5Pg9X"V;k0   branches51Testing软件测试网fQ/yez
   tags
*ij+p0X1`;`+Vt0ProjectB51Testing软件测试网-Q9lB `W(??x9NcU
   trunk51Testing软件测试网0F2Nl1IX#J4o3f;I
   branches51Testing软件测试网?gm%G4~fs`
   tags51Testing软件测试网UzY b ]
在这种布局里,每个项目会存在顶级目录里,然后该目录之下创建trunk/branches/tags,其中与第一种布局相同,这只是将项目放到自己版本库方式的替换,他们都在一个版本库中。Apache软件基金会使用这种布局方式来存放他们的所有项目在一个版本库。51Testing软件测试网 \pViD.BA!R$g

51Testing软件测试网{b'F7yp(s)D8Dm

通过这种布局,每个项目都有自己的分支和标签,可以很容易使用一个命令创建分支和标签,就像前面展示的:51Testing软件测试网 `y4XOy%ux&r

51Testing软件测试网lY+p,V'f5\

svn copyurl://repos/ProjectA/trunkurl://repos/ProjectA/tags/tagname-m “Create tagname”51Testing软件测试网O x{`1~)z T#c

J M3^j#_0这种布局可以简单的创建同时包含ProjectA和ProjectB的标签,你可以这样做,但是需要多个命令,你也要决定是否创建一个特别的目录存放这种分支和标签,如果你需要经常这样做,你或许应该考虑第一种布局。51Testing软件测试网~V I.eajl'E

51Testing软件测试网 O8qu.x;^

至于版本库中目录的名称,再说一遍:只是一种习惯,他们在Subversion中没有特别含义。51Testing软件测试网 s,jl iwQ

51Testing软件测试网/b[4yY\hN

“trunk”可以认为是项目的开发主线,你可以称之为 “main”,”mainline”,”production”或任何你喜欢的名字。

/\7fsj"~V0

hX+b1E%Ja B+c0“branches”是放置分支的地方,人们因各种目的使用分支,你或许希望通过特性分支或客户修改分支来隔离你的发布或维护分支等,在这个例子里,你可以在branches创建一层目录,或只是在顶级目录创建多个分支目录。51Testing软件测试网wk-O'F k o

51Testing软件测试网b-c3MzE6K

“tags”也不会被Subversion特别对待,他们只是习惯,或许通过钩子脚本或授权规则进行强制,来指明你创建了一个时间点的快照,通常情况下tags与分支的区别就是tags一旦创建不能修改,你也可以将标签目录叫做”releases” ,”snapshots”,”baselines”或任何你喜欢的。51Testing软件测试网.dfM?5X~ RR'MY

C8xMTz.t4w0记住,名称对你有意义,不是Subversion。最后,Subversion的架构,全局修订版本经常使得标签没有必要,我不知道只是因为要创建 tag而创建tag有什么意义,如果你需要在特定时间点重建软件,你可以通过svn log来确定相关的修订版本号。tags对于版本库的”外部”用户很有用,或许QA/Release团队需要执行构建,或许是一个内部开发小组希望在另一个产品使用发布版本,或是外部用户或客户希望根据字面含义从版本库获取发布快照,在这些场景中,创建tag是保证获取正确代码的最简单方法,也需要有好的交流机制来指明发布快照。51Testing软件测试网!Ub^"fq:C m/U5l)S

51Testing软件测试网7?P!x$Y l.h1J7`#F

希望本文可以为你澄清一些问题,让你更好的理解Subversion是如何工作的。51Testing软件测试网:ETH"h*J j6e D*F%h!j#u.e

51Testing软件测试网A4@X'hp

最后,我希望指出Subversion版本库的布局是可以修改的,你可以一直重组和重构布局,最坏情况下,会让用户调整他们的工作拷贝,但不会让你从头再来,你应该自由的改名,移动目录或任何你希望改变版本库的方式去做。51Testing软件测试网6YW5g#KqN%w

2qh-hP(ozS,D#R3N4z0文章来自[SVN中文技术网]转发请保留本站地址:http://www.svn8.com/SVNzixun/20080414/502.html

4pk&TV0@dDr)MO0

TAG:

老婆婆 引用 删除 annayin   /   2009-09-29 17:37:02
http://www.subversion.org.cn/svnbook/1.2/svn.intro.html

文章
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar