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 详解的更多相关文章

  1. svn merge详解

    svn merge详解 [OK] http://blog.163.com/lgh_2002/blog/static/4401752620106202710487/ Subversion的分支通常用于在 ...

  2. 【山外笔记-SVN命令】svn命令详解

    本文打印版文件下载地址 [山外笔记-SVN命令]svn命令详解-打印版.pdf 一.命令简介 svn命令用于Subversion命令行客户端,执行svn相关的操作. 二.命令语法 1.svn语法: ( ...

  3. SVN功能详解

    SVN功能详解   TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...

  4. Linux SVN 命令详解

    1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)   例如:svn checkout svn://192.168.1.1/pro/domain    ...

  5. Linux SVN 命令详解(zz)

    Linux下常用SVN命令 2012-04-02 11:46:00 标签:服务器 目录 Linux checkout linux系统 1.将文件checkout到本地目录 svn checkout p ...

  6. Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...

  7. SVN命令详解

    在开发中,除了在本机文件夹上进行svn更新外,在命令行中进行svn操作也非常关键,下面列举下网站摘抄的一些文档:1.将文件checkout到本地目录 svn checkout path(path是服务 ...

  8. Linux SVN 操作详解(转)

    1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)   例如:svn checkout svn://192.168.1.1/pro/domain    ...

  9. SVN四部曲之SVN设置详解深入

    想知道不同的设置是干什么用的,你只需将鼠标指针在编辑框/选项框上停留一秒钟...一个帮助提示气泡就会弹出来. 常规设置 图 4.68. 设置对话框,常规设置页面 这个对话框允许你指定自己喜欢的语言,同 ...

随机推荐

  1. C# 文章导航

    1. C#相关文章 1.1 C# 基础(一) 访问修饰符.ref与out.标志枚举等等 1.2 C# 基础(二) 类与接口 1.3 C# DateTime日期格式化 1.4 C# DateTime与时 ...

  2. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  3. ASP.NET Core 1.1.0 Release Notes

    ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...

  4. Asp.net Boilerplate源码中NotNullAttribute的用处

    看Asp.net Boilerplate 1.1.3.0源码时发现有一个NotNullAttribute的定义和27处的引用,就是不知道它的作用,当然顾名思义是可以的,就是不知道它是怎么判断的,在哪里 ...

  5. Sublime配置python开发环境

    Package Control Package Control 是Sublime 里直接安装附加插件的包管理器.可以通过以下步骤手动安装: 1.点击Preferences > Browse Pa ...

  6. Android性能优化之利用LeakCanary检测内存泄漏及解决办法

    前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来. ...

  7. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  8. 修改eclipse皮肤

    习惯了vim黑色背景的程序猿们想必用eclipse时会倍感的不适应吧,不过没关系,因为eclipse的皮肤是可以自己定制的! 下面是我电脑上的eclipse界面,看到这个是不是找回了vim的感觉呢? ...

  9. Asp.Net WebApi核心对象解析(上篇)

    生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...

  10. iOS controller解耦探究实现——第一次写博客

    大学时曾经做过android的开发,目前的工作是iOS的开发.之前自己记录东西都是通过自己比较喜欢的笔记类的应用记录下了.直到前段时一个哥们拉着我注册了一个博客.现在终于想明白了,博客这个东西受众会稍 ...