svn高级使用->linux下修改冲突

来源:互联网 发布:下载语音软件 编辑:程序博客网 时间:2024/05/22 13:55

 

命令

功能

使用格式

checkout

检出

svn  co  URL

up

更新到当前URL的末端

svn  up

add

增加

svn  add  文件名/目录名

rm

删除文件

svn  rm 文件名

 

删除目录

svn  rm 目录名

diff

base版本(最后检出或者更新到的版本)对比

svn  diff

 

与版本库中最新版本对比

svn  diff  -r  head

 

当前工作副本,两个版本之间对比

svn  diff  -r  reversion1:reversion2

 

版本库中任意两个tag做对比

svn   diff    (tag1)URL    (tag2)URL

ci

提交

svn ci -m "commit log"

log

查看当前工作副本log

svn  log

 

只查看指定版本的log

svn  log  -r

 

打印log所有附加信息

svn  log  -v

 

查看当前tag/branch版本详情

svn  log --stop-on-copy -v

info

查看当前工作副本所在URL

svn  info

status

查看工作副本的状态

svn st

 

查看文件的taglist

svn命令不支持,可执行cs taglist


解决冲突的例子:

工程师A修改了a.txt的第一行,提交了。

工程师B也修改了a.txt的第一行,然后执行svn up,这时SVN提示了:(以下,你开始扮演工程师B的角色了)

$ svn up

在 “a.txt” 中发现冲突。

选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,

(mc) 我的版本, (tc) 他人的版本,

(s) 显示全部选项:

我一般选择p(推迟),即引入冲突到本地,不过不会影响到SVN服务器端,可以放心。

OK,开始解决冲突了。


这时,会生成几个文件:

a.txt

a.txt.mine  a.txt.r6328  a.txt.r6336


其中a.txt中包含了工程师A、B的所有修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程师B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程师A提交前的版本,即未导致冲突的版本。

a.txt.r6336是工程师A提交后的版本,即导致冲突的版本。


一般,查看a.txt就可以看到冲突的详情了:

[yicheng@chengyisvntest]$ cat a.txt

<<<<<<<.mine

ialso modify ,agndagnagasdg;

=======

imodify this line;

>>>>>>>.r6336


以上,<<<<<<<.mine和=======之间是工程师B(当前的“你”)修改的内容,=======与>>>>>>> .r6336之间是工程师A修改的内容。这时,最好的办法是,叫上工程师A,你们一起确定这些修改是否都需要,是否相互兼容,然后留下需要的部分,删除<<<<<<< .mine、=======和>>>>>>>.r6336。


然后,测试,测试!确定没问题之后,就可以告诉SVN,你解决冲突了:

svn resolve –accept working a.txt (该命令会删除a.txt.mine  a.txt.r6328  a.txt.r6336)

svn ci -m ’some comment’ a.txt


0 0
原创粉丝点击