已转开发,博客新地址:http://welcomezhang.iteye.com/

Linux学习4:SVN在Linux下的使用

上一篇 / 下一篇  2011-08-06 13:29:21 / 精华(1) / 个人分类:Linux

柬之厚着脸皮置顶一句话:提交之前一定先查看diff。即在svn ci 之前一定要先svn diff看看自己准备提交了哪些代码。51Testing软件测试网4^Ou)H\:y
&最佳实践:commit之前一定要得做三件事情 –svn update; –svn status; –svn diff

!o(w``;T[*Af01、将文件checkout到本地目录:51Testing软件测试网7K8N\/n:]x
svn checkoutpath(path是服务器上的目录)51Testing软件测试网fxNrY pp
简写:svnco51Testing软件测试网V/Q&O(ED{)]S@

4s;b3_"T3K0补充:svn exportpath(path是服务器上的目录),对比co的区别大伙请注意哈
f)I,OPK-p2J0v0–export下载下来的内容是没有svn信息的。(目录下面没有隐藏文件夹.svn;没有纳入SVN版本控制)51Testing软件测试网W ^7NyhH$s

51Testing软件测试网 ]*vUE PB!|^

–co能够看到svn的信息(目录下面有隐藏文件夹.svn;纳入SVN版本控制)
m+};B(}?8||f ? p051Testing软件测试网4__(g2eN;X0Eb
2、往版本库中添加新的文件
H5[5d-}*P)KC&u H1Yi ?.NE0svn addfile51Testing软件测试网*L ^a)FA0Ztx [wv
例如:svn add add.php
MI lt&XI0svn add *.php(添加当前目录下所有的php文件)

!CQ5k6IMX0PW9tI)u0

_|!v3Ux_03、将改动的文件提交到版本库51Testing软件测试网L(ql:V0f xhj5N
svn commit-m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)51Testing软件测试网(Qh4}N-X"},nJ
例如:svn ci -m"test add a file by svn in linux" add.php51Testing软件测试网8fwn`$J
简写:svnci
j"n%r2V"e N \J%qV oB0commit之前一定要得做三件事情 –svn update; –svn status; –svn diff
3K E3s NWF~GD0

6@f J _!} D051Testing软件测试网%F#j5]0anx%~g:tI

4、删除文件51Testing软件测试网*TXc.D5c.N u*D8y:k
svn delete add.php51Testing软件测试网:L*lF0[ W0~[g
svn ci -m"test del a file by svn in linux" #推荐使用这种51Testing软件测试网]jtBOW!x _k
或者51Testing软件测试网O,k(nK:f3C
svn deletepath -m "delete test fle"51Testing软件测试网%m$[;z:D4tH Wbc
简写:svn (del, remove, rm)

n}[D ? x2B;}0

n0f9Nb B"L.a9N05查看全部日志svn log51Testing软件测试网k?6`o ^q
查看某个文件的所有修改记录,及其版本号的变化:svn logpath
)S P_)P{8]U*`H D0例如:svn log testcase/msearch/CaptureScreen.java

^IXWQ1wX`T0

j{3q\ f+h06查看文件详细信息51Testing软件测试网n5} _R E
svn info(path)
t0G4iK{0例如:svn info testcase/msearch/CaptureScreen.java51Testing软件测试网:Lr,{&z v4r

A4U B6dA{07、查看文件或者目录状态
5UR],PW"r01)svn statuspath(目录下的文件和子目录的状态,正常状态不显示)
t*z4^s8|2c;]0\$V0?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定51Testing软件测试网X)dz O1ZL7q1s+t4h6}
2)svn status -vpath(显示文件和子目录状态)
8Kk#Z)eRc$lYW0第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。51Testing软件测试网{"G%M6|$Pg
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
l3OMX(Z7g:Kz1[@0简写:svnst51Testing软件测试网L6|lAWp)s
51Testing软件测试网'nF"~ [ b T
8、比较差异
rHG,xeeQ p0svn diffpath(将修改的文件与基础版本比较)----------尚未测试51Testing软件测试网5b0{.m0M,\x
例如:svn diff test.php
'KNX)GG~v0Bp8u-~0svn diff-r m:n path(对版本m和版本n比较差异)
A/Y/}UiNotc0例如:svn diff -r 200:201 test.php
f2Dmr-F(N0简写:svn di51Testing软件测试网3s2c[%[:i
[zhangweikuang.pt@search041124 leapfrog_v0.3_20110307]$ svn diff -r 71835:71836 add3.php51Testing软件测试网R8S0O(S,E
Index: add3.php
FF8z1pJ3Y?0===================================================================51Testing软件测试网0wJf.^!Z0KPl9{` X
--- add3.php (版本 71835)
f1p,Ah3o$zu7P9l8DI i0+++ add3.php (版本 71836)51Testing软件测试网3c7k K"qf5Toz
@@ -1,3 +1,4 @@
#DMr F7F-l0Hi,welcome to c u!51Testing软件测试网u.QJ Dk/~
this is a file added for testing by welcomezhang.
:u*o+]2T]-ePR2H0-51Testing软件测试网HT:ML^ SAj
+Add some content for diff compare.
x3qP+w8o0+Don't worry, it's just for testing svn diff command!51Testing软件测试网 f4O\+gu+|H'x e
柬之的diff.pl扩展51Testing软件测试网r-q/pb-[
~/diff.pl | more 不作比较,类似于SVN log,列出修改日志51Testing软件测试网RI;kC;sL;c
~/diff.pl 1 | more比较倒数第1个(最后1个)版本和倒数第2个版本
$`6HL3R XqY1Jx0~/diff.pl 2 | more比较倒数第2个版本和倒数第3个版本51Testing软件测试网)x)V|D _OX6E;g

Q k\!^g"W09、将两个版本之间的差异合并到当前文件
?8X%yO,xM VJ0svn merge -rm:n path
N"i#l;h'h*PC!X0例如:svn merge -r 71835:71836 add3.php(将版本71835与71835之间的差异合并到当前文件add3.php,但是一般都会产生冲突,需要处理一下)51Testing软件测试网 H'\9n+T,DL RU
–将两个分支的代码合并在一起。51Testing软件测试网"bnW`Rp5vG3m9Q2l
–其实和svn update有些类似。51Testing软件测试网c/}K5r5Z t p
–svn diff-and-apply: two repository trees are compared, and the differences are applied to a working copy.51Testing软件测试网)M%b8tJ@6}/?P)L
svn -merge -c 71835 ./ 将trunk上的某一个版本合并到当前branch上,这个很给力!51Testing软件测试网7L:r8rV{zR

51Testing软件测试网 I{L:L ?L8E-g_&o

10*、更新到某个版本51Testing软件测试网)@,]KKxc9o1w
svn update -rm path51Testing软件测试网7Fo5Q7vK|*^
例如:
z+SO ^:M0m&f6EV$Y0svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。51Testing软件测试网$A%E!_ K MflR
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)51Testing软件测试网]%_8i4^"PS%x
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)51Testing软件测试网_K'[%Z C-r$`
简写:svnup51Testing软件测试网ud8[fd0D*p

51Testing软件测试网/f6kf%P)m.{.LJ.n8sm

11、加锁/解锁
r+W2[EYi4JU0svn lock-m "LockMessage" [--force] PATH51Testing软件测试网6L.Pg*|E
例如:svn lock -m"lock add3 again" add3.php
Z7~ U2iC'B5El0svn unlockPATH51Testing软件测试网4d%I5y3y.U}-r
svn unlock add3.php

K _r'n[r v O0

$h^$eL/x R4`012、版本库下的文件和目录列表51Testing软件测试网4^U!rIp/n-oR
svn listpath
f1^)R'c$f;NI3E Yb^0显示path目录下的所有属于版本库的文件和目录
]F.u;eK{7av*x0简写:svnls

0?6y5Xu7}3`0

9qGY,EL%e013、SVN 帮助51Testing软件测试网aALq q8uo+fP
svn help51Testing软件测试网4e3r2cR-zq3M
svn help ci

(b:C[H4q T$~#B051Testing软件测试网KK FC(b

参考http://hi.baidu.com/aaxh/blog/item/138e8913fa2ebdd8f7039e11.html51Testing软件测试网 EZuY]zT9|0m
http://svnbook.red-bean.com/en/1.5/svn-book.html

N0oK%Ov(}+GoxA0

TAG: Linux svn SVN

 

评分:0

我来说两句

Open Toolbar