这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » svn高级使用-linux下修改冲突

共1条 1/1 1 跳转至

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

高工
2017-12-01 17:10:44     打赏

命令

功能

使用格式

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中包含了工程师AB的所有修改,以<<<<<<<=======>>>>>>>分隔。

 

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




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]