SVN与TortoiseSVN实战:冲突详解(二)
硬广:《SVN与TortoiseSVN实战》系列已经写了四篇,第二篇《SVN与TortoiseSVN实战:标签与分支》和第三篇《SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支》重点介绍了标签和分支的概念及实际操作演示,关注人数较多。
上一篇提到关于冲突的知识,其中已经说明了第1点:
1、什么情况会产生冲突?
2、冲突发生时产生的三个文件是什么含义?
3、怎样使用TortoiseSVN解决冲突?
SVN是根据同时对相同位置上内容的修改来判断冲突的,这是核心的一点,下面说明2、3点。
冲突发生时产生的三个文件是什么含义?
在签出文件时,当本地文件的修改与其他人签入的修改产生冲突时,会产生三个冲突文件,如下图:

我们在冲突的文件上点击右键,使用TortoiseSVN的Show log查看下冲突文件的修改日志:

先补充一点,SVN的Revision是基于整个项目的,而不像有些版本控制程序针对于每个文件有自己的Revison,SVN每一次签入都会递增,一个Revision下可能包含多个文件的修改。
对比这Show log出来日志,我们来说下这三个文件的含义:
新建文本文档.txt.r96:96就是版本号,是你本次修改前的初始版本,也就是说你是基于这个版本修改的,如果你Revert本次修改,那本地会退回到这个文件的内容;
新建文本文档.txt.r97:97也是版本号,是别人在你签入前签入后生成的版本;
新建文本文档.txt.mine:是你修改后准备提交的那个版本,也就是在冲突产生前你修改的新建文本文档.txt的内容;
那这时的新建文本文档.txt的内容是什么呢?

打开后可以看到SVN已经修改了这个文件,使用<<<<<<< >>>>>>> 标明了发生冲突的地方,基于以上对三个文件的理解,大家应该能容易明白SVN的标记的方法了吧:
<<<<<<< .mine 和 ======= 之间是你修改的内容;
======= 和 >>>>>>> .r97 之间是别人最新签入的内容;
通过Show log查看别人签入时标注的注释,决定采用谁的代码,然后删除掉<<<<<、======、>>>>>和多余的代码来解决冲突。
最后强调一下 .mine 在SVN中代表自己的修改。
怎样使用TortoiseSVN解决冲突?
其实理解了SVN的标记方式,在冲突少的情况下手动解决是最方便的。
以下演示在冲突文件上右键,选择TortoiseSVN菜单Edit conficts,使用TortoiseSVN的工具来解决冲突:

相信了解三个冲突文件代表的意义以后,可以很容易了解以上三个区域显示内容的含义了:
左边代表别人的修改,右侧是自己的修改,底部是合并后的内容;
红色标记了冲突的行,在别人与自己的冲突行中选择采用的一行,点击右键Use this text block,就解决了一行冲突。
也可以使用整个文件来解决冲突,右键使用Use this whole file。
所有冲突解决完以后,点击上边的对号按钮,标记解决,这时此前的三个文件消失,签入你的修改。
额外说点什么
每次签入把本次修改的原因与注意事项的写入SVN的备注中是良好的习惯,当产生冲突时可以结合备注来了解修改的原因,对于CodeReview人员来说也是必须的。
SVN服务器可以设置脚本,对于不写备注的签入拒绝签入,设置方法可以自行百度。
记录,为更好的自己!
SVN与TortoiseSVN实战:冲突详解(二)的更多相关文章
- SVN与TortoiseSVN实战:冲突详解(一)
硬广:<SVN与TortoiseSVN实战>系列已经写了三篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,第二篇<SVN与TortoiseSVN实战:标签 ...
- SVN与TortoiseSVN实战:文件加锁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...
- SVN与TortoiseSVN实战:补丁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...
- SVN与TortoiseSVN实战:补丁详解(转)
硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...
- SVN与TortoiseSVN实战:属性的奇技淫巧(二)
硬广:<SVN与TortoiseSVN实战>系列已经写了七篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解. 关于属性的奇技淫巧较多,分为两篇来写,第一篇详见< ...
- SVN与TortoiseSVN实战:属性的奇技淫巧(一)
硬广:<SVN与TortoiseSVN实战>系列已经写了六篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,预计再用三.四篇来结束这个系列. 本篇详解一下SVN的属 ...
- 【山外笔记-SVN命令】svnlook命令详解
本文打印版问文件下载地址 [山外笔记-SVN命令]svnlook命令详解-打印版.pdf 一.命令简介 svnlook是检验Subversion版本库不同方面的命令行工具,不会对版本库有任何修改,只是 ...
- ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御
ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3 ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...
- SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支
硬广:<SVN与TortoiseSVN实战>系列已经写了两篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,关于分支和标签的知识介绍可翻阅第二篇<SVN与T ...
随机推荐
- Mongodb(2)创建数据库,删除数据库,创建集合,删除集合,显示文档内容
显示所有数据库列表:show dbs > show dbs local .078GB runoob .078GB > 显示当前数据库:db > db runoob > 显示所有 ...
- IP地址查询接口
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...
- 如何利用svn自动同步更新到网站服务器
我们最终的目的是:当本地提交后,SVN服务器自动更新服务器端指定WEB目录内的文件 实现方法: 找到服务器端 SVN版本库所在的目录(目录名称是Repositories),这个目录是在安装Visual ...
- php判断用户客户端是否是微信内置客户端
微信内置浏览器的渲染方式在某些方面和其他浏览器不同,所以有时候需要做一些兼容性处理,那么就需要判断是否是微信内置浏览器.最好的判断方式就是通过 User Agent 来判断. 工具/原料 php ...
- IP地址漂移的实现与原理
当前备份软件比较流行,其中用到的关键技术是IP 地址漂移, 实际上IP地址漂移技术是利用共享的“虚拟”IP地址,当本地进行节点切换与路由切换,使另一端的发送和收方端没有感觉到本地节点地址有变化,保证了 ...
- Async/Await - Best Practices in Asynchronous Programming z
These days there’s a wealth of information about the new async and await support in the Microsoft .N ...
- 修改Jenkins启动衍生进程的生命周期
Jenkins+jmeter 多线程测试java接口时爆错,导致无法生成html报告. 先介绍下场景: 在Jenkins中新建了一个Job,假设你在一些列Build Step之前/之后,启动了一个进程 ...
- win10,软件, 发布者不受信任怎么办
这个方法比较管用:右键单击windows左下角,弹出右击菜单选择‘命令提示符(管理员)(A)’,然后用DOS命令安装程序.就可以了 PS:win10的cmd可以直接复制粘贴了.
- 两款HTTP流量分析工具HttpWatch与Fiddler的比较(转)
最近突然想看看HTTP的消息到底是怎么回事,在网上搜了几款软件来监控,并且搜到了下面的文章,感觉介绍的不错,就copy下来了.下文摘自:http://www.imkevinyang.com/2009/ ...
- mysql数据库同步
mysql数据库同步 1.1. Master 设置步骤 配置 my.cnf 文件 确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log-bin选项.该部分还应有一个server-i ...