ubuntu(linux) 下 svn 使用kdiff3 merge主干

在linux下面不能使用小乌龟(TortoiseSVN),idea不能使用svn merge主干代码,每次merge代码时启动虚拟机。

按下面的方法操作,可以像小乌龟(TortoiseSVN)一样merge代码了:


1、安装kdiff3。跨系统且比较流行代码diff工具。

sudo apt-get install  kdiff3

2、安装svn工具。

1) sudo apt-get install subversion subversion-tools

2)降级安装svn(1.7),参考: KUbuntu/Ubuntu 14.04 (降级)安装 svn 1.7

3、配置脚本。

1)下载svndiffwrapper.txt。http://download.csdn.net/detail/love254443233/7941913

2)复制:sudo cp svndiffwrapper.txt  /usr/bin/svndiffwrapper

3) 设置可运行权限。sudo chmod a+x /usr/bin/svndiffwrapper

4、修改svn配置信息

1)打开配置文件:vim ~/.subversion/config

2)修改diff工具及merge-tool-cmd工具的配置

### Set diff-cmd to the absolute path of your 'diff' program.
###   This will override the compile-time default, which is to use
###   Subversion's internal diff implementation.
# diff-cmd = diff_program (diff, gdiff, etc.)
diff-cmd = svndiffwrapper
### Set diff3-cmd to the absolute path of your 'diff3' program.
###   This will override the compile-time default, which is to use
###   Subversion's internal diff3 implementation.
# diff3-cmd = diff3_program (diff3, gdiff3, etc.)
diff3-cmd = svndiffwrapper
### Set diff3-has-program-arg to 'yes' if your 'diff3' program
###   accepts the '--diff-program' option.
# diff3-has-program-arg = [yes | no]
### Set merge-tool-cmd to the command used to invoke your external
### merging tool of choice. Subversion will pass 4 arguments to
### the specified command: base theirs mine merged
# merge-tool-cmd = merge_command
merge-tool-cmd =Kdiff3 "$1" "$2" "$3" -o "$4"
5、merge主干。

1)命令行进入本地分支的工作目录,如/home/xx/work/svn/xx-hotel-image

提交分支(以防不测)。svn commit -m "merge trunk"

2)copy主干(trunk)url,如 http://svn.xx.xx.com/svn/xx/xx/xx-api/trunk

3)merge代码 (最后面的“.”号可省略,因为操作第1)步)。

svn merge  http://svn.corp.qunar.com/svn/mobile/mobfx/hms-api/trunk  .

4)运行过程中遇到冲突时会提示:

What would you like to do?
[M]erge [A]ccept [I]gnore [R]evert [D]efault [H]elp

选择(M)erge进入kdiff3界面操作,该界面跟windows下面使用小乌龟(TortoiseSVN)进行merge大致一样。

附:

1、界面操作方法

1)第一栏为分支新建的版本文件。第二栏是分支正在开发的文件。第三栏为trunk的文件。下面一栏是比较后输出的文件(output)。

2)output文件可以编辑,当不能满足merge需要时可以人为的修改。

2、svn merge其它常用命令

1)merge主干到本地分支:svn merge  http://svn.xx.xx.com/svn/xx/xx/xx-api/trunk .
2)merge出错时使用回退该操作:

svn revert — 取消所有的本地编辑。恢复一整个目录的文件,可以使用--depth=infinity选项:
Svn revert --depth=infinity .

3)提交本地修改到服务器:

svn commit -m "merge trunk"     

4)遇到如下错误:

svn: E155015: 提交失败(细节如下): 
svn: E155015: 提交终止: “/home/xx/work/svn/xx-hotel-image/versions.mapping” 处于冲突状态

解决方法:svn resolved /home/xx/work/svn/xx-hotel-image/versions.mapping

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值