工作必备基础 - 比较差异

  • 作者:KK

  • 发表日期:2015.12.27


为什么小红更新后还有红点

可是尽管进行了更新,可是小红的a.js还是长着个红点,怎么出去见人呢?----其实有红点就说明小红的文件与仓库的内容不一样

你想想喔,之前是小明把文件内容修改成了如下

var id = 123;
var email = 'abc@xx.com';
var age = 18;
var name = 'xiaoming';

他提交了代码后,SVN仓库登记的a.js内容肯定就只是上面这4行了,而小红的代码却是5行对不对?只要小红的代码比仓库的a.js多一行或多/少一个文字等不相同,都被视为"该文件已变更,未提交",所以小红的文件上长红点了


比较差异

对小红的a.js右键选择"SVN 比较差异"(这个菜单只会在文件有红点时出现),这回弹出来的是一个差异比较工具,它分成左右两个视图显示了两个文件状态,如下图,请注意我圈的3个地方,接下来讲解它们

下面那个圈所圈的是个蓝色的 + 号,而且这一行代码是黄色背景的,意思是说,不是黄色背景的都是"仓库的代码内容",因为小红基于仓库的代码内容上添加了她自己的alert代码,所以这就是小红的变更,可是她还没有提交,所以仓库并不知道,没有登记这些内容,小明更新也不会有她这句未提交的代码


查看变更

此时把小红的代码提交到仓库,接着...接着请你认真看我说的,不要自己乱动哦!接着你去小明那里更新,但是不要关闭更新窗口,我们要基于这个窗口做点操作

首先注意,这里不像小红那里用绿色显示"已合并",而是正常的黑色文字内容

这是因为小红本来自己就有修改,没提交修改就更新了文件,所以新的文件内容和她自己修改的文件内容发生了合并,于是提示"已合并"

可是小明添加email变量声明后就提交了代码,他的代码跟仓库的一模一样,没有发生变更.当小红提交alert代码的时候,小明更新,而小明的文件本来已经没有了变更(之前被他提交了!!!),所以没有"合并"这个说法,只是正常的更新内容而已

好了现在才到本小节的重点,你刚才没有关闭那个更新结果的窗口吧?关了?过来,我保证不打死你!

对这个更新结果中a.js那一行右键会弹出菜单,选择显示日志

会弹出一个日志窗口,这个窗口专门显示了a.js这个文件经过了多少次提交,每次提交版本号都会增加,但不一定是+1哦,先别管

我们选中版本9那一行,然后再对下面的a.js那一行右键选择"显示变更"

于是熟悉的画面又重现了,一个变更比较结果,左边是这个文件在版本9之前的样子,右边是变更后版本9的样子,并显示黄色背景那一行代码是新添加的代码

你也可以再选一下版本8,然后在下面右键a.js查看变更,也能看到版本8的变更


接下来还要学习一下其它变更的查看

删除的变更

打开小明的a.js,把var age = 18;那一行删掉,就是第3行代码,然后提交,去小红那边更新,可是也别关闭更新窗口,就在这个更新结果里对a.js右键选择与工作副本比较

这样其实也会出来一个查看变更的窗口,像下图一样,左边是更新之前的样子,右边是更新后的样子,左边用橙色突出显示了被删除的那一行,并且左边有一个减号,右边的相同行里变成了灰色空白,说明在右边的新版中代码被删除掉了

为什么上一章我不教你用这个"与工作副本比较"菜单而是显示日志再查看变更呢,因为可能是SVN的BUG,如果当时与工作副本比较的话显示会有点不正常的,所以我到这个阶段了才教你用这个菜单


修改的变更

然后我们现在在小红这边是吧,于是打开a.js,把

var email = 'abc@xx.com';

修改成下面的样子

var email = 'xiaohong@xx.com.cn';

其实就是将邮箱中的abc修改成别的内容,再在.com后面添加.cn

把小红的变更提交,接着去小明那边更新,然后右键更新的文件名选择显示日志来弹出日志窗口,但此时先别关闭更新结果窗口,后面要用

在日志窗口里选中最新版日志(默认就选中了),再右键下面的文件名显示变更,显示如下图:

这里有5个看点,我都圈出来了

先看左边的,它显示被修改之前的样子,用一个蓝色的 - 号表示"这一行被删除了点东西",然后邮箱中的abc内容被划成红色,表示被删除了

再看右边的,它显示被修改之后的样子,用一个蓝色的 + 号表示"这一行有新内容",然后邮箱中的xiaohong.cn这两个个字符串内容标为黄色,表示"这是新内容"