SVN学习总结

上一篇 / 下一篇  2008-10-03 12:24:20 / 个人分类:配置管理

一、svn安装

8gTGE#mc5p%z|c O Z r0

Windows51Testing软件测试网5E/mt8ntk0g

--subversion

~#UpD-U0

--Tortoisesvn客户端

u }^#E7B+HT%Z!p0

1.安装tortoisesvn,按提示步骤执行

.DA,X:W6@)qp0

2.安装subversion时候必须在安装时选择complete,因为只有选complete后在SlikSvn\bin下才会出现svnserver.exe

k$za}.A$d$M4P W(d {0

3.安装完成后,要在自己的机上建立版本库E:\svndemo\repository51Testing软件测试网$|8pSUu\%?7f x#V9P

4.sliksvn\bin下输入命令行svnserve  -d r E:\svndemo\repository51Testing软件测试网%J'Z4W.JC#S

5.repository\conf\svnserve.conf文件修改权限51Testing软件测试网 z#mG$~BQ Y@'r K

这时我们先采用匿名方式登录进去将#anon-access=read改成  anon-access=write

(~P:bO5d4D8x h0

后面第四点会讲到如何进行用户管理.51Testing软件测试网l$G1m,xf[U3V|?

二、建立版本库(Repository

;G&K%O B Q`+]0

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放

tM m&TR(_hlN0

创建SVN版本库
s4eH/yr1[0# svnadmin create E:\svndemo\repository

^z&Oo5PVNg0

数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:51Testing软件测试网j L]X^+y

svnadmin create就会在目录E:\svndemo\repository下创建一个版本库。我们也可以使用TortoiseSVN图形化51Testing软件测试网 DZ,p g`_U ^:Y/K

的完成这一步:51Testing软件测试网d$D7V(U \G,g
在目录E:\svndemo\repository"右键->TortoiseSVN->Create Repository here...“, 然
51Testing软件测试网D#wK+P OKgbc,pnR

后可以选择版本库模式, 这里使用默认即可,然后就创建了一系列目录和文件。51Testing软件测试网6O{ CDRxIcz

三、运行独立服务器

V$R9m:MM\AA&i0

在任意目录下运行:51Testing软件测试网m}5Oo?,t;]n3m

svnserve -d -r E:\svndemo\repository
XF[,`~ }0
我们的服务器程序就已经启动了。

(qTf$?hk%hc2d0

四、初始化导入

|JI!~TA-N0

来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个51Testing软件测试网M&fZ0D8|%|

readme.txt文件:51Testing软件测试网-v"q%Z)Z*jv!xR r

右键->TortoiseSVN->Import...51Testing软件测试网7_1{u%y4_(g }
URL of repository
输入“svn://localhost/trunk51Testing软件测试网 P,~ W!s6C)G
ok51Testing软件测试网7Z ~(h~(Q
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本

@CN9?H D6nM hP0

库中。

C;_1{,WW_NN}&?0

五、基本客户端操作

$RD@.H8dS#@0

取出版本库到一个工作拷贝:51Testing软件测试网^"JJ2jk+l&yxI

来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of51Testing软件测试网 n%mW[(a8^ B

repository中输入svn://localhost/trunk(版本库中要拷贝的文件所在的目录),这样我们就得到了一份工作拷贝。51Testing软件测试网&w0n-S5l)M tb!dQ&W

在工作拷贝中作出修改并提交:51Testing软件测试网@,}1F7d tp9mz ui$e

打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我

d)g|Xk#aji0

们可以运行。51Testing软件测试网B!Q2`:C4o

察看所作的修改:51Testing软件测试网 Oc#O8`c(U"J9l

readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。

&M EV yiX0

 51Testing软件测试网'V/qdH1X

六、配置仓库,用户及权限管理51Testing软件测试网qb)`W Z9Iq$A

SVNsvnserve对于每个仓库,有一个独立的配置文件和独立的用户、权限管理。51Testing软件测试网0D;Jph+a
在这里仍然要保持配置文件svnserve.conf的独立,但是用户、权限管理是用统一的一个文件来存储。
vX hP:U#W&|C0
这样方便以后的管理和维护。
}"jQ-GPmZ0
另外要注意,即使svnserve服务已经运行,修改配置文件或者用户、权限管理文件,保存后马上生效,不需要重启服务。
51Testing软件测试网}$PN.N+^$n4Sy

svnserve下的配置文件

;E_!EtFui0

E:\svndemo\repository51Testing软件测试网!wxYO%L9J
├─conf
5bq wa*G#T0
├─dav51Testing软件测试网;Uh7j:Eh%u R {3V1f
├─db51Testing软件测试网*]G2R1{S
│ ├─revprops51Testing软件测试网0sv#t[2V+K^w+P/e"P4^
│ ├─revs
3vUW\4l"Y*{0
│ └─transactions51Testing软件测试网EZo!o$j W ]NP
├─hooks51Testing软件测试网1D*l UBb6v]Uc
└─locks
51Testing软件测试网/J$u.N w)YY8Q

   conf目录下有三个文件authzpasswdsvnserve.conf

Uaa#SB_0

其中的“svnserve.conf”是这个版本库的配置文件,当使用svnserve时,这个配置文件决定了使用什么认证和授权文件51Testing软件测试网"Pe8g Q;kbVM6M

password-db = passwd51Testing软件测试网0u2J*L5Uo4N
authz-db = authz
51Testing软件测试网&W+HW v kB[N3R3}N:{

下面一个例子是使用用户登录,但没有给用户分组,也没有设置权限.51Testing软件测试网'^ MI"~Rh

来到E:\svndemo\repository\conf目录,修改svnserve.conf51Testing软件测试网TU-~p9A^if9F

# [general]51Testing软件测试网}:RY]x`
# password-db = passwd
51Testing软件测试网uQ*h*V*|k$?*zhe n4D

改为:51Testing软件测试网3UB?#Wd;q

[general]
-i,m.t"@IB0password-db = passwd
51Testing软件测试网Z3d}O6n

然后修改同目录的passwd文件,去掉下面三行的注释:

Z#z(M F|p bv9O0

# [users]51Testing软件测试网)YhUD{he
# harry = harryssecret51Testing软件测试网PZ9V4~Tbj-Y.Vx
# sally = sallyssecret

@x,T3z A4H0

最后变成:51Testing软件测试网 g`!?)Hz]^K

[users]51Testing软件测试网%X-~)H w9}1]]$E
harry = harryssecret
G3n0b%Pa$ZdG0sally = sallyssecret

/RS"i)k8y:} gWF0

采用上面的修改之后,你再进行操作,这时候进行操作都需要输入用户,密码.

,Rj\tU'Sn!nLB0

 51Testing软件测试网&ATO;{]1^ NX

另一种方法,可以不用版本库中已经有的passwd,authz,svnserve.conf文件

,vKp$Sq$[0

全部自己重新创建51Testing软件测试网p(H;V f8O1w`

 

|"d N^2N~7s(x@;um0

你可以直接删除默认的svnserve.conf文件,然后使用下面的配置:51Testing软件测试网 s Ls x1H|AR
# vi svnserve.conf
us!j0qP8IMj0[general]51Testing软件测试网^,W Xb"Ee+K
anon-access = none
c kz%AP4f W"}0auth-access = write51Testing软件测试网/{Ip3L|(J9s*]KO
password-db =svn-user.conf51Testing软件测试网&aQn.LL
authz-db = svn-authz.conf
51Testing软件测试网 |XC_1p9Md4\

说明:
{P0jB`#{.e s"c0anon-access = none #
不允许匿名用户访问
U)N3C'm$l:a|#Z0auth-access = write #
通过验证的用户可以读和写
V-Zp*L_U0password-db =svn-user.conf #
用户保存文件51Testing软件测试网2D._!X(~t;v
authz-db = svn-authz.conf #
权限管理文件
51Testing软件测试网 z&l5am+v!j})r

创建用户存储文件

!]'H0B\ a"]V0

# vi   svn-user.conf

cWeu+l4nIE"s0

设置用户帐号
Y6u3cq7X]@?5P9w0[users]51Testing软件测试网K Zu5yz
harry = harryssecret
8ze v,S8L v0sally = sallyssecret
:v7L9@8uu0W ]%RC9e/U2u0bote = botessecret
51Testing软件测试网V%NfKZ"? F'kB

说明:
4T!]e)o(f0[users] //
是必须的,标记为用户配置开始
Yg"Z_KH7s0harry = harryssecret //harry
是用户名 ,harryssecret是密码。注意,是明文密码51Testing软件测试网4h3ss3q.q:U$~
sally = sallyssecret //
同上
],N-A'SJ;Ys K"w0bote = botessecret //
同上

?I/X;G)`F-}0

往后所以仓库的用户都在这里记录就可以了。至于那个用户,允许访问那个仓库,在权限管理里限制。

_H/n-RSh&Kt0

创建权限管理文件
\&|N*}&dh\0# vi  svn-authz.conf

pnYn(G h0

设置权限管理
)|#`%QpV e.j.{G0[groups]
w.y%ez2Q5f(a0source1 = harry51Testing软件测试网*aD#{C[ [
source2 = sally

0S{b&HUI(BK0

[source1:/]51Testing软件测试网 a7h1},S3s+N|u}

@source1 = rw51Testing软件测试网1^'Rb kw:}
@source2 = r
51Testing软件测试网?8g^l f

51Testing软件测试网$? V1B!P/Aqg
[source2:/]
7ncE-C(Q!d+z7u0@source2 = rw
f3|,y2~kH6`0@source1=r
51Testing软件测试网.M4Vh j1d/F?

 

d1RbTdP?6\`0

  对于管理多个不同的版本库,使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-dbauthz-db文件。下面是一个多版本库的目录:

3O1x\4\(f4AI0

E:\svndemo\repository
vv;Dr@c0
├─project151Testing软件测试网&szPg0H
│ ├─conf
0E X1FX5D0
│ ├─dav
E(Z^ oCun0
│ ├─db51Testing软件测试网,q4f0f1U$U$V/WN
│ │ ├─revprops
7m`'u~](}A0
│ │ ├─revs
OrX r#I9g#O0
│ │ └─transactions
&z&v8F\G W'\?F0
│ ├─hooks
j(^R/lic$LN9j%}n0
│ └─locks51Testing软件测试网r ~7y)tyXjr
└─project251Testing软件测试网%~$C&eQva
├─conf
ky+\(Gu h4z0
├─dav
$C5J*?`1`}0
├─db51Testing软件测试网#?\AV%]
│ ├─revprops
;hRCmp"K TrN)_lb,l0
│ ├─revs51Testing软件测试网8z]0m/S8Sz4o:f1m!D
│ └─transactions
-C LR2A p0
├─hooks51Testing软件测试网.rXR9RgUnQ
└─locks

bqbC)^i `0

Project1project2是两个不同的版本库,它们有着相同的文件结构,如果要统一管理,我们可以将它们的验证和认证文件指到一个相同的地方;在E:\svndemo\repository目录下拷贝authzpasswd,修改两个版本库的svnserve.conf文件,使其验证文件都指到E:\svndemo\repository下的authzpasswd

1Vf,tYGU_R0

password-db =.. /.. /../passwd51Testing软件测试网|juX3I#C*h.n(|

authz-db =.. / ../../authz51Testing软件测试网xqr,ea+QM^2L L.`

修改passwd文件添加新的用户,格式为:用户名=密码  例如:user1=user151Testing软件测试网-v1u+h(DUH

[users]

YK*e$n8sG&W5c |0

user1=user1
%\t0BQ(U` A8n.T0user2=user2
z Ltp*op0if0user3=user351Testing软件测试网bZ*qGk(W-{-n9\
user4=user4
m|9W)s.CCn2rO0user5=user551Testing软件测试网a)Z'NS#a1tr-J
user6=user6
51Testing软件测试网,WUI-M/U,qBm

修改authz文件可以为用户赋予相应的访问权限51Testing软件测试网J SA&G7_2{u

[groups]
5|"~$Q0}4r0#
定义组信息51Testing软件测试网Y@!v |(j6Ih }

group1 = user151Testing软件测试网&u]uUh)o.l
group2 = user2
4F-x%]+}U R0group3 = user3
:Gj \!plX2g^/N,H6@0group4 = user4
)X/g%x%~*l;F QE4I0group5 = user5
T e u)hs0group6 = user6
51Testing软件测试网9o*H@o.O_%cX

 [/]
/P$@'g,fgdX Z0#
指定所有的版本库默认只读,root可读写
X'|FG-S0{ }:oW0* = r51Testing软件测试网9L-QZ5d3j.yX
root = rw
51Testing软件测试网8_"Z3\G.IH vW;q

[project1:/]51Testing软件测试网!t t(P m_^!z1?i-j
#
指定对版本库project1根目录的权限
*O [*_l,z X!? NI;Y-bF)r0@group1 = rw   #
读写51Testing软件测试网x-h@1D@G[b.C+m
@group2 = r      #
51Testing软件测试网KW^'PQ

[project1:/trunk]
*[ R&b[{#~#i4M0#
指定对版本库project1/trunk根目录的权限,
1|H/XLq&}O0@group2 = rw
qr$A2A(EH0@group3 = r

"KFFM.}'e(yM0

如果希望管理的目录结构中包含有中文目录,使用UltraEdit-3213.10aauthz文件另存为UTF-8BOM格式,SVN就可以对中文目录进行权限管理了!例如:51Testing软件测试网/D\@3eE#u[|CK

[groups]51Testing软件测试网5}@[1QA't.T
# harry_and_sally = harry,sally
S9TH o2A'F$v C l m @r0group1 = user1
'u5d!s2_?WrqC*r@0group2 = user2
+yt;f L4Oxf0group3 = user3
o$Hr Q%|8K7P0group4 = user451Testing软件测试网^:^\Eo"Sc7n
group5 = user5
e$`o*FZ#aC0group6 = user6
51Testing软件测试网(@*L2p z%c@

[/]51Testing软件测试网.c8I L4JXzSo,e QS
* = r51Testing软件测试网0h&\!Q:J0q V`H:c0C#W|
root = rw

0zjOf%Q.r0

 51Testing软件测试网8ul[:b-I-L7p n

 [project1:/]51Testing软件测试网"Lu-K%n/X
@group1 = rw
[/Uy3C @ c{h*DD0@group2 = r

6]o*z d~([0

[project1:/01项目]51Testing软件测试网 H@)k(VKl#Lu
@group2 = rw
~'BHQZHg;Ef0@group3 = r
51Testing软件测试网z0k*P"Y w6C%Q@A5ZM0H)@o

[project1:/01项目/会议纪要]51Testing软件测试网,x h6Sla4EM
@group3 = rw
!_I%O'lf3UIr0@group4 = r
51Testing软件测试网]nM7fJ0r%U

[project1:/03私有分支]51Testing软件测试网 _Fq1N(\+CG
@group4 = rw51Testing软件测试网3wf C#|7Uu
@group5 = r
51Testing软件测试网'XYTIj6Uz6|4[[

[project2:/]
` q|vGv3V0@group1 = rw51Testing软件测试网^LC7P$xkd
@group2 = r

x_r1]9a^;uX0

[project2:/09发布包]
/Y#jVz ~0@group2 = rw
Q([,BbtVg!g0@group3 = r
51Testing软件测试网0~@^mUaq

[project2:/09发布包/V1.0]51Testing软件测试网IW2Xzc!p }
@group3 = rw51Testing软件测试网jiAX"V^,yg-O
@group4 = r
51Testing软件测试网 Vg3mx(sdR^mY

这样我们根据设定的权限在客户端检入检出的时候就可以针对不同的中文目录进行操作。51Testing软件测试网LlX']SY

 

\ b%Ga/HF*s\0

七、SVN软件配置
{K)clUy$q0
忽略文件
-Y D8\|e5m:E*L0
SVN[Setting][General]中,设置需要忽略的文件以便忽略掉一些临时的、无用的文件,常被忽略的文件有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak。每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用VC++Tornado编程时常用的一些忽略文件。

j"_8u$lO v.y$h:n GC0

51Testing软件测试网ZC*K HKaz9J
八、SVN仓库目录结构

1E{z fcz9U2aL0

SVN仓库的负责人规划好仓库的目录结构。推荐的目录结构如下图所示。

-l N$k!~ N;Z0

 51Testing软件测试网.t3z*l%}W S'{ i

E:\svndemo\repository
{C PmutM2c0
├─code
,sqf'TIbf9Q {I0
│ ├─branch
6G vn)n6S0
│ │ ├─lzj_051201
'D9b$XT6b0
│ │ ├─xw_05120651Testing软件测试网xW![Hf.nU
│ │ └─xw_051208
W4Z P@ IGB0
│ └─trunk
o4M3N m)@1Mr-^w0
└─doc
Q]e#`Q4u6~4w_0   
├─branch
)ud7XuA+ttJ0  
└─trunk

D]/W^'\+v0

51Testing软件测试网%Yz#P7nNX1w pT
仓库的一级目录只有两个,分别为codedoc。其中,doc主要用来放置先期的文档,code主要用来放置工程的代码,也可以包含后期的文档。
4U_-a9O2gQ!p0
@ \#Qu!pF7o ]0
仓库的二级目录只可以是branchtrunk两个目录,分别存放分支与主干。trunk目录下直接存放工程文件。branch目录下包括一些子目录分别对应各个分支。
51Testing软件测试网DM1rUD,p}

51Testing软件测试网#gw uq6Z;OTy


W!i4t;lqj*IU0
本地目录结构
-E x5]2A/_f4j:V0
SVN仓库中取出代码时,一定不要把整个仓库取出来,而应该只取出trunk目录,或只取出branch下的某个分支目录(比如上图中的svn:\\code\branch\xw_051206)。
+[|-f be^0
1r6m.^(E-X5N(q0
九、合作开发方法51Testing软件测试网k+~p8t_8FM
51Testing软件测试网P)whv w(rq[ V
合作开发基本流程
)cTAE{mjiw]c0
一个项目会有多个人共同合作开发完成。基本流程是:
51Testing软件测试网(~8T8y1Rr:b2e({9?

各开发成员建立自己的分支,并在此分支上开发

&rW'Bf)E1H5m0

各开发成员把分支合并到主干上并形成较为稳定51Testing软件测试网%uR^L^,Kc7m

各个成员重新从主干上建立新的分支,在此分支上开发(即回到第一步)51Testing软件测试网McDttH@&C{

循环往复,直到工程结束。

%lY-d(sUvJ$O0

 

u2y,U&a)_x0

下面我用一个例子来说明合作开发的基本流程。
-B&_({,M v7`,R dN0
现在xblzj两个开发人员要共同开发一个工程onlytest

^5w h!}#jh0

51Testing软件测试网*_0Vsl!iP^x

分支的建立51Testing软件测试网r)E(]:zT;|4C1v8i
xb
lzj分别在onlytest这个工程中建立两个分支,分别为xb _051115lz_051115
^~u9cg/y%g G0 
在这里分支命名要采用[姓名缩写_6个数的日期_后缀(可选)]的形式,比如xb_051208_1xb_051212之类的。创建完分支后我们可以看到这个工程的目录结构如下所示:

rUV}dGF0

├─code
.XaA1eJn5}re0
│ ├─branch51Testing软件测试网&|*^3VS4oc
│ │ ├─lzj_05115
*s([])[ k:p4k0
│ │     └─test_SVN.txt
Y d9B6oPUr!m/F0
│ │ ├─xb_0511551Testing软件测试网E\\9O lty
│ │     └─test_SVN.txt51Testing软件测试网 z ~#Sm+S6l yVr X]
│ ├─trunk51Testing软件测试网S%e!|:Q7Y(@i3j
      └─test_SVN.txt
51Testing软件测试网#`~ j&? Cz/s]

└─doc51Testing软件测试网I`)P [GD @'u
   
├─branch
gJ{2BQH0  
└─trunk51Testing软件测试网U6jLtm#F,h(\$R
51Testing软件测试网4c5O Oc de;h/Z"D
 
建完之后,xblzj分别在本地取出对应的分支进行开发。
0M+hC*{(TE L0
分支的合并
A;V ?7D-l_$\%g0
当程序到达一个比较稳定的阶段,就需要把分支合并到主干上,下面讲述一下合并的流程。51Testing软件测试网9z5LCO[ HG.H FJ

R1n5`1^^{xO$M5K0
在本节中继续使用上一节中所示的工程与SVN仓库讲解。
hDKe$a.n`k-w0
lG"Z4O|1l*`%Y5j01.xb
lzj分别修改自己分支上的代码51Testing软件测试网1m3N0`Mr~
现在,主干上的test_SVN.txt是空文档。51Testing软件测试网'K!O l C6W
xblzj修改提交后,两个分支中test_SVN.txt分别如下所示:

(Uk l|.}1f9V0

xb_151Testing软件测试网$ob7u e?8MY y

xb_251Testing软件测试网I*? @d&y6n7c\,?QV

lzj_151Testing软件测试网n_-Ie*yS

lzj_351Testing软件测试网4nta i"Vb8jDl?V

2.xbxb_051129分支合并到主干51Testing软件测试网s^N D'tdX4u*N

xb先把主干check out到本地。然后在主干的目录上右键选择svn->merge,弹出如下窗口:
"[9]'q1_v6a/z6Z0
然后直接点击merge进行合并,你也可以通过dry run来看是不是两者之间有差异。由于没有其它人修改主干,所以合并的很顺利,下图是xb_051115与主干合并后的结果。合并完毕之后,由xb对主干进行提交。

/Y6wUH o:cJIL0

xb_151Testing软件测试网*EV:`j cN9E

xb_251Testing软件测试网;@ pe6ei ^~(O-r

3.lzjlzj_051129分支合并到主干,解决冲突51Testing软件测试网(}%RAh\1R%nR$]c
   xb
合并完毕之后,lzj要将他的分支合并到主干上去,方法同上。但是由于xb已经修改过主干,所以产生了冲突,会弹出一个冲突对话框。双击对话框中的产生冲突的文件名,就可以调出工具对此文件进行合并。51Testing软件测试网JL{M q R$gU-p En

 

jn/B^Tj~0

c;m%N%V{0m?K-W0

  首先比较第一个窗口与第二个窗口,把结果修改合并到第二个窗口。

\$wke3N0p0

然后确保光标处于第二个窗口时,点击相应的按钮。这样会把第二个窗口的内容全部复制到第三个容口。之后保存,退出。51Testing软件测试网@H]7C't)D3K

然后在工程目录上点右键,进行SVN->Resolved。这样会删除无用的临时文件。51Testing软件测试网2q0C+S(N~a6z

最后提交所作的修改,并添加详细的注释。51Testing软件测试网-X&nJBiSXu@

51Testing软件测试网yJ%@N'vv y~
十一、其它注意事项
S8Q8}|P0SVN
中的标签51Testing软件测试网0k#T&x hZ#g4u
 
CVS不同,使用SVN时不用专门为目录添加标签,因为SVN也对目录进行版本管理。51Testing软件测试网 Z9ndB&k%N.b
我们在提交时写好注释(比如重要的版本提交时使用051201之类的日期作为开头),就可以通过注释来查找比较重要的目录版本号,相当于CVSVSS中的标签。51Testing软件测试网~6\_h%Q8g'?U7~
另外,每个工程都会有一个版本说明文件,通过此文件可以查找关键版本。
u%D9iIWz ym0
b P.KeW$M7?-]9U7` t0
文件的删除、移动与重命名51Testing软件测试网)u9U)Px+k^D@
你可以重命名、移动或删除你的文件或文件夹,但请使用SVN进行这些操作,否则之前的版本信息会丢失。
?_e4u_@#q0
使用SVN删除、移动与重命名文件夹的方法是在文件/文件夹上点右键进行SVN操作,或直接在资源浏览器中使用右键拖放(会弹出SVN选项)。51Testing软件测试网 y2]$|%PX
51Testing软件测试网t1u;gj7_C.G
文件的删除、移动与重命名之前,必须保证工作目录是最新的版本;进行这些操作之后,需要进行提交。51Testing软件测试网&F7f)g1h'j)\2D
51Testing软件测试网D_4h.["ZP
版本的回退
3[wy0@ RIARoW0
在代码的编写过程中,难免会有不尽人意的地方,你也许需要回退到某一个版本,但是在这个过程中可能有一些文件你想保留,也有一些文件你不想保留,这就牵扯到很复杂的版本管理过程,在这里给大家推荐几种方法。
Xs$Q'G&s%N051Testing软件测试网;d j&jM*j?],w
1.
若是你编辑了工程,在没有提交的前提下,你想放弃这些修改,你可以直接选择revert就可以更新到工程的最新的版本。
Z'uR^Z;SAr!c|0
\-]7AN%R2[02.
若是你想退回到某一个版本,你就可以直接选择update to reversion这样我们就可以把我们的版本回退到你选中的版本去,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。我们需要update并解决冲突。
#oy Og$akV0
eUB3K#i%Q q0H7O^~03.
你可以直接选择revert changes from this revision如图,这样的话你可以直接解决冲突并提交。不过这种方法的不足是,你新建的文件都没有了,整个工程都回退到之前的版本了。51Testing软件测试网 Mtd hb-bK'[5z5`
51Testing软件测试网7s]+_8F.D/f2b
4.
我推荐的一种方法是,直接export一个你需要的版本,然后用你export的版本覆盖你的最新的版本,这样你就可以不丢失你新建的文件,同时获得headSVN控制文件。
F V-ch;q C;i051Testing软件测试网;Q/E^1yvp
51Testing软件测试网3jsy9m%T0N
提交的时机
,w*H"B;h C0  
每个工程会有很多个小模块,当某个模块达到稳定的时候,你就需要提交一次,以免写下个模块代码的时候出现不可恢复的错误。51Testing软件测试网/KxfY;H
  
每一次提交需要前,需要通过pclint检查,保证是一个编译没有错误的版本。当提交比较稳定的版本的时候,同时要修改你的版本号。51Testing软件测试网w0@8z'v[_
提交的时候要添加注释,若多人共同修改同一段代码我们就需要为注释添加上更加详细的说明
N&K6EO hD1Ua5PV6}0
版本说明文件
3uvm#gQ`_0  
版本说明文件为xml表格,可用excel编辑,它会记录下关键的版本信息。51Testing软件测试网B,\\@#aRA;IM(e
版本说明文件内容如下表。发布版本是指用户对外公布的版本号,后文中有详细描述;RevisionSVN内部的工程文件夹的版本号。一个发布版本可能对应多个Revision51Testing软件测试网e QuL@YtF!M0C
51Testing软件测试网^"G6y k?Ge

 51Testing软件测试网v5NQ-J,DJ3m;[z

51Testing软件测试网x tm yblg

 51Testing软件测试网w?%A&Bo%Rj0rG {


TAG: 配置管理

 

评分:0

我来说两句

日历

« 2024-03-31  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 14372
  • 日志数: 23
  • 建立时间: 2008-08-23
  • 更新时间: 2009-10-18

RSS订阅

Open Toolbar