SVN冲突解决方法

说明

  1. 在ubuntu中,使用svn控制代码版本(其实个人喜欢GIT的,但是技术团队使用的svn,好吧,没什么大不了,虽然以前用的是win的svn),出现冲突问题,做程序员就得上刀山下火海,不怕问题来找你,所以,本着职业的精神,好吧,解决吧。
  2. 第一次使用markdown写博客,写的时间有点旧,语法不熟悉,看着语法手册一步一步创建的,大家凑合着看吧。

写在前面的话

不管是使用git还是svn,都会用到diff,查看版本之间的不同,个人不喜欢git、svn的代码比较风格,所以,配置的是BCompare4.0.7版本。在Beyond Compare官网下载LINUX版本的BCompare。

BCompare具体安装步骤

  1. 下载**BCompare**,在其官网 http://www.scootersoftware.com/download.php;

  2. 下载的是.deb扩展的文件,双击安装即可;
    (这个是官网下载的)
    (这个破解版的,里面有破解程序)
  3. 安装过程中可能会要使用注册码key,一般选择试用30天,但是一般帝国大都喜欢破解版,网上有很多破解的方法,文后会附上4.0.7的破解地址;
  4. 运行,CTRL+ALT+T快捷打开命令窗口,输入bcompare回车即可运行。

SVN具体安装步骤

  1. 建议国内朋友把apt资源镜像库修改为国内的镜像

    修改方法:

    1. ~$ sudo vim /etc/apt/sources.list
    2. 在vim编辑器中使用全局替换,将系统的镜像地址替换为上述所说的国内镜像,一般选择阿里云的,vim替换命令: :%s/mirrors.ubuntu.com/mirrors.aliyun.com/g
      • 参数说明:s是替换,g是全局
      • %s相当于1,$s,即从头到尾替换
      • /a/b/中参数为替换参数,意思是把a替换为b
    3. vim中输入命令:wq回车退出vim编辑器
  2. ~$ sudo apt-get upgrade 更新apt库
  3. ~$ sudo apt-get update
  4. ~$ sudo apt-get install svn 安装svn

    SVN安装结束!!!

svn配置BCompare

这里使用了csdn上zzqhost的文章《用beyondcompare来diff SVN中的代码》,请见谅,此文不值钱,所以没有任何商业用途,只为方便大家,如果有侵权,告知笔者,自会删除。

  1. 新建一个mydiff.sh文件

    在目录~/.subversions/下,新建脚本文件 mydiff.sh, 内容如下:

    ~$ sudo vim mydiff.sh

    打开编辑器,写入下面的shell代码:

#!/bin/sh

# Configure your favorite diff program here.
DIFF="/usr/bin/bcompare"
# DIFF="/usr/bin/meld"
# DIFF="/usr/bin/kompare"
# DIFF=env LANG=zh_CN.UTF-8 WINEPREFIX="/home/borqs/.wine" wine "C:\\Program Files\\Beyond Compare 2\\BC2.exe"

# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}

# Call the diff command (change the following line to make sense for
# your merge program).
$DIFF $LEFT $RIGHT 

# Return an errorcode of 0 if no differences were detected, 1 if some were.
# Any other errorcode will be treated as fatal.
return 0
并给其添加可执行权限.
  1. 修改config文件.

    修改目录~/.subversions/下的文件config, 加入如下一行:

diff-cmd = /home/zzq/.subversion/mydiff.sh

现在说说如何解决冲突问题

当使用svn up更新代码的时候,出现了冲突(具体显示什么信息已忘记):

<!-- 忘记了错误信息,以后会补上-->


如果你也向我一样,忘记有哪些冲突,请使用命令svn resolve查看:

joyven@joyven-ThinkPad-E450:/var/www/weimob/2.0/trunk$ svn resolve

在文件“app/modules/merchant/views/replys/subscribereply.php”中发现冲突。

选择: (p) 推迟, (df) 显示差异, (e) 编辑文件, (m) 合并, (mc) 我这边的冲突,
(tc) 他们的冲突, (s) 显示全部选项:

当我输入e进行编辑的时候,搜索>>>>的字符串,即可定位冲突的信息,然后看看冲突的是我这边的,还是他们的,然后进行编辑,删掉冲突的行,以及冲突标记。

修改完后,根据提示信息写入修改,然后离开,退出编辑器。

接下来,又回到了选择的那一块了,输入:df,回车看看什么情况:

— app/modules/merchant/views/replys/subscribereply.php.r27619 - 别人的
+++ app/modules/merchant/views/replys/subscribereply.php - 已合并
@@ -725,7 +725,7 @@
</div>
<div class="form-actions">
<!-- <input type="hidden" name="reply_id" id="reply_id" value="140841">-->
- <input type="hidden" name="news_reply_type" id="news_reply_type" value="<?php echo empty($newsmaterial['news_reply_type']) ? '' : $newsmaterial['news_reply_type'];?>">
+ <input type="hidden" name="news_reply_type" id="news_reply_type" value="<?php if(isset($newsmaterial['news_reply_type'])){echo $newsmaterial['news_reply_type'];}?>"> <input type="hidden" name="news_reply_type" >id="news_reply_type" value="<?php echo empty($newsmaterial['news_reply_type']) ? '' : $newsmaterial['news_reply_type'];?>">

<button type="submit" class="btn btn-primary" id ="bsubmit">保存</button>
<!-- <button type="button" class="btn" onclick="window.location='/insidepage/reply/by-repaly.html'"> 切换到图文模式 </button>-->
选择: (p) 推迟, (df) 显示差异, (e) 编辑文件, (m) 合并, (r) mark resolved,
(mc) 我这边的冲突, (tc) 他们的冲突, (s) 显示全部选项:

这时候,代码已经合并成功了,如果不相信,请继续输入df或者m看看,由于前面输入过df,现在输入m尝试一下吧:

正在合并“app/modules/merchant/views/replys/subscribereply.php”。
Conflicting section found during merge:
(1) 他们的版本 (第 728 行) |(2) 你的版本 (第 728 行)
————————————–+————————————–
<input| <input
————————————–+————————————–
Select: (1) use their version, (2) use your version,
(12) their version first, then yours,
(21) your version first, then theirs,
(e1) edit their version and use the result,
(e2) edit your version and use the result,
(eb) edit both versions and use the result,
(p) postpone this conflicting section leaving conflict markers,
(a) abort file merge and return to main menu: *1*
“app/modules/merchant/views/replys/subscribereply.php”的合并完成。
选择: (p) 推迟, (df) 显示差异, (e) 编辑文件, (m) 合并, (r) mark resolved,
(mc) 我这边的冲突, (tc) 他们的冲突, (s) 显示全部选项: *r*
“app/modules/merchant/views/replys/subscribereply.php”的冲突状态已解决

输入m看到的信息如上(除了最后一行),然后我们输入1,告诉svn使用他们的版本,然后svn告诉我们合并完成。最后输入r,显示冲突已解决。当我们回到命令窗口,输入svn resolove的时候,发现什么都没有输出,这说明冲突确实解决了,并且告诉了svn。

附加信息

BCompare4.0.7破解方法及破解版下载
vim的全局替换


时间: 2024-09-21 22:44:08

SVN冲突解决方法的相关文章

eclipse中svn冲突解决

             最近在和同事做项目的时候出现了冲突,冲突解决方法是这样的:                右键项目 -> Team -> 与资源库同步                           2.在同步视图中选择Conflicts Mode,以便首先查看解决冲突                         3.双击需要解决的冲突文件,这里为Student.java,右侧主显示区会出现比较视图.左侧为本地程序,右侧为svn上的最新代码                 

Mybatis批量插入唯一索引冲突解决方法

问题描述 Mybatis批量插入唯一索引冲突解决方法 这个问题是批量插入的时候的防重处理,Spring MVC+myIbatis做批量数据插入,因为 需要插入的表的数据量很大,而且要插入的数据很多,要分很多批次进行插入,且为了追求效率,所以不可能对每一条都做是否在数据库中存在唯一键是否存在的校验处理,有没有相关的处理方案可供分析? 解决方案 如果输mysql数据库就直接插入不指定主键就ok了吧,oracle就使用序列 解决方案二: 不指定主键呢?需要主键么 解决方案三: 唯一键是否存在的校验处理

同时调用prototype与jquery冲突解决方法

在开发应用中会经常碰到要同时调用prototype与jquery,但它们又会存在冲突,下面我们来看关于冲突解决方法 方法如下: 1.将jquery.js放到prototype.js后面(这个是必须的否则无论如何还是要罢工地). 2.在jquery.js后面将$变量重命名. 代码 <script type="text/网页特效" type="text/javascript" src="window.js"></script>

IIS上虚拟站点的web.config与主站点的web.config冲突解决方法

IIS上在主站点下搭建虚拟目录后,子站点中的<system.web>节点与主站点的<system.web>冲突解决方法: 在主站点的<system.web>上一级添加父节点: <location path="." allowOverride="false" inheritInChildApplications="false">     <system.web>         <!

【游戏开发备注之二】配置XCODE版本控制SVN详细步骤内含解决XCODE/MAC OS10.8无法配置SVN的解决方法

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/game-detail/1048.html 关于SVN,我就不介绍了,不清楚的照旧给你们个连接,请自行学习下谢谢.SVN百度介绍: http://baike.baidu.com/view/183128.htm Xcode 默认自带Git 与 SVN,我们本篇介绍SVN的详细配置步骤如下:  1. 首先检测你的Mac 中是否已经安装了SVN,M

windows 7接内外网出现冲突解决方法

Windows 7双网卡同时接内外网时, 会发生两个默认网关冲突的情况,导致两个网络都不能访问. 因此解决方法就是只配置一个网关,另一个网络用一条静态路由就好了. 第一步,先将外网网卡按正常配置好.再配置内网网卡,注意内网默认网关留空. 第二步,route print一下,确认0.0.0.0从走外网网关. 若当前默认不是外网网关,用管理员身份启动cmd,先route delete 0.0.0.0,再route add 0.0.0.0 mask 0.0.0.0 zzz.zzz.zzz.zzz(外网

ThinkPHP与PHPExcel冲突解决方法_php技巧

很早之前就知道有一个叫做PHPExcel的类(官方网站)可以用来操作Excel,一直没有机会尝试,今天试用发现无比强大,下载后的源码包里有详细文档,几乎能实现手工操作Excel能实现的一切功能. 一个简单的读取Excel的例子如下: 复制代码 代码如下: $inputFileType = 'Excel2007'; $inputFileName = './public/files/import_user_template.xlsx'; $sheetname = 'Sheet1'; //指定Exce

iP冲突是怎么解决?iP冲突解决方法

分析原因:为什么会IP相冲突? 因在你同一个局域网中有一个与你一个的IP地址了,如A电脑是 192.168.1.2而你的也是192.168.1.2这样就冲突了 解决办法 右击桌面"网上邻居"=>"属性"-网络连接属性-"此连接使用下列项目"这个框里找到internet协议(tcp/ip)-属性按钮 然后就弹出IP地址.子网掩码.网关等等

jquery中click与dblclick事件冲突解决方法

在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会.  代码如下 复制代码 <script type="text/javascript"> $(document).ready(function(){   $("button").click(function(){     $("p").slideToggle();   }); }); </script>