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

  1.  
  2. 在冲突解决一节结束后,我们的main.c文件的内容如下
  3.  
  4. #include <stdio.h>
  5. #include "add.h"
  6. #include "sub.h"
  7.  
  8. int main()
  9. {
  10. printf("5 + 10 = %d.\n",add(,));
  11. printf("15 - 10 = %d.\n",sub(,));
  12. //kris's test
  13. printf("kris: 12 + 28 = %d.\n",add(,));
  14. //sally's test
  15. printf("sally: 60 - 33 = %d.\n",sub(,));
  16. return ;
  17. }
  18. 下面,我们做一些修改,具体如下
  19.  
  20. #include <stdio.h>
  21. #include "add.h"
  22. #include "sub.h"
  23.  
  24. int main()
  25. {
  26. printf("5 + 10 = %d.\n",add(,));
  27. printf("15 - 10 = %d.\n",sub(,));
  28. //kris's test
  29. printf("kris: 32 + 28 = %d.\n",add(,));
  30. printf("kris: 15 - 10 = %d.\n",sub(,));
  31. //sally's test
  32. printf("sally: 60 - 33 = %d.\n",sub(,));
  33. return ;
  34. }
  35. 修改完后,调用svn diff命令,会有如下的输出,下面就说说输出中各部分的意思。
  36.  
  37. root@letuknowit:/home/kris/calc/trunk# svn diff main.c
  38. Index: main.c
  39. ===================================================================
  40. --- main.c (revision )
  41. +++ main.c (working copy)
  42. @@ -, +, @@
  43. printf("5 + 10 = %d.\n",add(,));
  44. printf("15 - 10 = %d.\n",sub(,));
  45. //kris's test
  46. - printf("kris: 12 + 28 = %d.\n",add(,));
  47. + printf("kris: 32 + 28 = %d.\n",add(,));
  48. + printf("kris: 15 - 10 = %d.\n",sub(,));
  49. //sally's test
  50. printf("sally: 60 - 33 = %d.\n",sub(,));
  51. return ;
  52. Index: main.c
  53.  
  54. svn diff可以查看当前工作拷贝中所有的被修改的文件,对于每个文件的diff输出部分由Index: 文件名的形式进行区分。
  55. 等于号后面的内容就是关于main.c文件的diff情况了。
  56.  
  57. --- main.c (revision )
  58. +++ main.c (working copy)
  59. ---打头的是原始文件,也就是版本库中的最新版本,或者理解为修改前的文件
  60. +++ 打头的是目标文件,这个就是你修改后的版本
  61.  
  62. @@ -, +, @@
  63. 这里的-和+分别表示原始文件和目标文件,,7表示从第7行开始的7行,-,7就是原始文件的从第7行开始的7行内容,+,8的意思类似,表示目标文件从第7行开始的8行内容。结合起来理解就是:
  64. 目标文件从第7行开始的8行内容和原始文件的从第7行开始的7行内容之间存在差异
  65.  
  66. printf("5 + 10 = %d.\n",add(,));
  67. printf("15 - 10 = %d.\n",sub(,));
  68. //kris's test
  69. - printf("kris: 12 + 28 = %d.\n",add(,));
  70. + printf("kris: 32 + 28 = %d.\n",add(,));
  71. + printf("kris: 15 - 10 = %d.\n",sub(,));
  72. //sally's test
  73. printf("sally: 60 - 33 = %d.\n",sub(,));
  74. return ;
  75. 这个就是具体的差异情况了,前面的-号表示需要从原始文件中删除的行,+号表示目标文件中将要增加的行,-号开头的部分只属于原始文件,+号开头的部分只属于目标文件,其余的是两者相同的部分。
  76.  
  77. printf("5 + 10 = %d.\n",add(,));
  78. printf("15 - 10 = %d.\n",sub(,));
  79. //kris's test
  80. - printf("kris: 12 + 28 = %d.\n",add(,));
  81. + printf("kris: 32 + 28 = %d.\n",add(,));
  82. + printf("kris: 15 - 10 = %d.\n",sub(,));
  83. //sally's test
  84. printf("sally: 60 - 33 = %d.\n",sub(,));
  85. return ;
  86. 为了进一步了解@@ -, +, @@的意思,上面加上了行号等信息,第一列的数字是行号,后面两列的数字表示第几行。经过标注可以清晰的看出原始文件第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. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

  2. JavaScript Date对象

    本篇主要介绍 Date 日期和时间对象的操作. 目录 1. 介绍:阐述 Date 对象. 2. 构造函数:介绍 Date 对象的构造函数new Date()几种方式. 3. 实例方法:介绍 Date ...

  3. 使用AWS亚马逊云搭建Gmail转发服务(三)

    title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...

  4. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  5. 自定义Inspector检视面板

    Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [Sys ...

  6. React使用antd Table生成层级多选组件

    一.需求 用户对不同的应用需要有不同的权限,用户一般和角色关联在一起,新建角色的时候会选择该角色对应的应用,然后对应用分配权限.于是写了一种实现的方式.首先应用是一个二级树,一级表示的是应用分组,二级 ...

  7. jQuery之Deferred源码剖析

    一.前言 大约在夏季,我们谈过ES6的Promise(详见here),其实在ES6前jQuery早就有了Promise,也就是我们所知道的Deferred对象,宗旨当然也和ES6的Promise一样, ...

  8. Redis百亿级Key存储方案(转)

    1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...

  9. 报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.

    学习 Activity 生命周期时希望通过 Dialog 主题测试 onPause() 和 onStop() 的区别,点击按钮跳转 Activity 时报错: E/AndroidRuntime: FA ...

  10. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...