svn diff 详解
UI版:




如果多人编辑同一段代码,常常容易出现冲突的情况:
如果出现冲突,我们如何解决他呢?
1 可以选择使用自己的文件mime file,也可以使用 他们的文件 their file
2 解决冲突, 而不是逃避。 在上图 Mergerd 部分直接编辑即可:

编辑完毕,然后 选择“Marked as resolved” 即可
其中红色块表示是冲突,是必须要处理的。如果不处理冲突,那么ctrl+s 会提示 :

出现unresolved conflicts,即

这个是必须解决的,否则 冲突会一直保留。 冲突解决完毕,下面的merged部分的红色会消失。 否则表示冲突没有解决,是无法执行 “mark as resolved”操作的。
圆圈表示空行,
— 表示左边的版本的内容
+ 表示右边的版本的内容
<=> 表示移动的内容, 这个其实没什么用
灰色部分表示原来是没有的。
(左边)褚红色的表示被修改的内容,—— 这里一定是修改而不是新增 ———— 这个只会出现在左边,也就是被修改的部分。
橘黄色的表示 空行或空的内容
黄色(或者不知道是否可以说是浅黄色)的表示 新增或修改的内容。 —— 没错, 这回包括了新增 和修改。
浅紫色表示 修改的行中, 没有发生变的部分 —— 新增的不会有浅紫色
白色, 当然表示没有发生任何变化的部分
红色: 表示冲突, 通常,左右两边都会出现红色。其他颜色是可以忽视的,但是红色必须正确处理,否则代码会保留冲突!!
总结, 除了黑色的字体颜色之外,
左边(原文件,或者说新文件) 可能出现的颜色有:
上面提及的颜色都可能出现
右边(新文件) 可能出现的颜色有:
白色
黄色 黄色,一律表示发生变化的内容, 以单词为单位(这里面的单词是java的变量名), 以 . , ; / ';" 为分隔符。
浅紫色
灰色
红色
可以看到, svn 的diff 功能其实是不完美的, 比较,常常出现不准确的情况, 比如
下面是 文本版diff 说明,参照 : http://www.xuebuyuan.com/2028115.html
在冲突解决一节结束后,我们的main.c文件的内容如下 #include <stdio.h>
#include "add.h"
#include "sub.h" int main()
{
printf("5 + 10 = %d.\n",add(,));
printf("15 - 10 = %d.\n",sub(,));
//kris's test
printf("kris: 12 + 28 = %d.\n",add(,));
//sally's test
printf("sally: 60 - 33 = %d.\n",sub(,));
return ;
}
下面,我们做一些修改,具体如下 #include <stdio.h>
#include "add.h"
#include "sub.h" int main()
{
printf("5 + 10 = %d.\n",add(,));
printf("15 - 10 = %d.\n",sub(,));
//kris's test
printf("kris: 32 + 28 = %d.\n",add(,));
printf("kris: 15 - 10 = %d.\n",sub(,));
//sally's test
printf("sally: 60 - 33 = %d.\n",sub(,));
return ;
}
修改完后,调用svn diff命令,会有如下的输出,下面就说说输出中各部分的意思。 root@letuknowit:/home/kris/calc/trunk# svn diff main.c
Index: main.c
===================================================================
--- main.c (revision )
+++ main.c (working copy)
@@ -, +, @@
printf("5 + 10 = %d.\n",add(,));
printf("15 - 10 = %d.\n",sub(,));
//kris's test
- printf("kris: 12 + 28 = %d.\n",add(,));
+ printf("kris: 32 + 28 = %d.\n",add(,));
+ printf("kris: 15 - 10 = %d.\n",sub(,));
//sally's test
printf("sally: 60 - 33 = %d.\n",sub(,));
return ;
Index: main.c svn diff可以查看当前工作拷贝中所有的被修改的文件,对于每个文件的diff输出部分由Index: 文件名的形式进行区分。
等于号后面的内容就是关于main.c文件的diff情况了。 --- main.c (revision )
+++ main.c (working copy)
---打头的是原始文件,也就是版本库中的最新版本,或者理解为修改前的文件
+++ 打头的是目标文件,这个就是你修改后的版本 @@ -, +, @@
这里的-和+分别表示原始文件和目标文件,,7表示从第7行开始的7行,-,7就是原始文件的从第7行开始的7行内容,+,8的意思类似,表示目标文件从第7行开始的8行内容。结合起来理解就是:
目标文件从第7行开始的8行内容和原始文件的从第7行开始的7行内容之间存在差异 printf("5 + 10 = %d.\n",add(,));
printf("15 - 10 = %d.\n",sub(,));
//kris's test
- printf("kris: 12 + 28 = %d.\n",add(,));
+ printf("kris: 32 + 28 = %d.\n",add(,));
+ printf("kris: 15 - 10 = %d.\n",sub(,));
//sally's test
printf("sally: 60 - 33 = %d.\n",sub(,));
return ;
这个就是具体的差异情况了,前面的-号表示需要从原始文件中删除的行,+号表示目标文件中将要增加的行,-号开头的部分只属于原始文件,+号开头的部分只属于目标文件,其余的是两者相同的部分。 printf("5 + 10 = %d.\n",add(,));
printf("15 - 10 = %d.\n",sub(,));
//kris's test
- printf("kris: 12 + 28 = %d.\n",add(,));
+ printf("kris: 32 + 28 = %d.\n",add(,));
+ printf("kris: 15 - 10 = %d.\n",sub(,));
//sally's test
printf("sally: 60 - 33 = %d.\n",sub(,));
return ;
为了进一步了解@@ -, +, @@的意思,上面加上了行号等信息,第一列的数字是行号,后面两列的数字表示第几行。经过标注可以清晰的看出原始文件第7行开始的7行和目标文件第7行开始的8行内容了。
svn diff 详解的更多相关文章
- svn merge详解
svn merge详解 [OK] http://blog.163.com/lgh_2002/blog/static/4401752620106202710487/ Subversion的分支通常用于在 ...
- 【山外笔记-SVN命令】svn命令详解
本文打印版文件下载地址 [山外笔记-SVN命令]svn命令详解-打印版.pdf 一.命令简介 svn命令用于Subversion命令行客户端,执行svn相关的操作. 二.命令语法 1.svn语法: ( ...
- SVN功能详解
SVN功能详解 TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...
- Linux SVN 命令详解
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- Linux SVN 命令详解(zz)
Linux下常用SVN命令 2012-04-02 11:46:00 标签:服务器 目录 Linux checkout linux系统 1.将文件checkout到本地目录 svn checkout p ...
- Linux下svn命令详解
本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...
- SVN命令详解
在开发中,除了在本机文件夹上进行svn更新外,在命令行中进行svn操作也非常关键,下面列举下网站摘抄的一些文档:1.将文件checkout到本地目录 svn checkout path(path是服务 ...
- Linux SVN 操作详解(转)
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- SVN四部曲之SVN设置详解深入
想知道不同的设置是干什么用的,你只需将鼠标指针在编辑框/选项框上停留一秒钟...一个帮助提示气泡就会弹出来. 常规设置 图 4.68. 设置对话框,常规设置页面 这个对话框允许你指定自己喜欢的语言,同 ...
随机推荐
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 基于本地存储的kvm虚拟机在线迁移
基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...
- CYQ.Data、ASP.NET Aries 百家企业使用名单
如果您或您所在的公司正在使用此框架,请联系左侧的扣扣,告知我信息,我将为您添加链接: 以下内容为已反馈的用户,(收集始于:2016-08-08),仅展示99家: 序号 企业名称 企业网址 备注 1 山 ...
- kindeditor4整合SyntaxHighlighter,让代码亮起来
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换 ...
- SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)
前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...
- 11、Struts2 的文件上传和下载
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
- 自定义搭建PHP开发环境
学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...
- 实现一个类 RequireJS 的模块加载器 (二)
2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...
- Redis百亿级Key存储方案(转)
1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...