《SVN宇宙版教程》:第二章 TortoiseSVN的Update和Commit与冲突的解决-2

2.4 使用TortoiseMerge查看文件差异与合并

在章节2.2中可以发现,使用SVN时会出现版本冲突,更加细致的处理版本冲突可以使用TortoiseMerge工具来进行处理。

使用SVN时每一次提交都在SVN服务端进行记录,所以可以在Commit界面中双击文件来查看文件版本变更的差异。

查看文件的差异使用的是TortoiseMerge工具。它主要的用途是:

  1. 察看两个文件的差异,合并它们,或者删除不想要的修改。
  2. 编辑本地修改和修正版本库之间的冲突。
  3. 应用补丁Patch

2.4.1 图标加号

    代码差异的显示在TortoiseMerge工具中使用图标来进行标识,所以后面的章节将一一为大家进行介绍。

Step01:在进行实验之前,首先创建一个实验用的仓库f,在该仓库中执行如下的步骤,来体会一下TortoiseMerge工具是如何查看文件的差异:

Step02:在桌面创建文件夹f_data,并在该文件中创建文件f.txt,该文件默认的内容是空,如图2.41所示。

图2.41 内容为空的文件

 

Step03:将文件夹f_data导入Import到f仓库中。

Step04:再将仓库f中的所有内容Checkout到桌面的f_checkout文件夹,并编辑f.txt内容如图2.42所示。

图2.42 编辑f.txt内容为12

 

    光标在字符2后面。

Step05:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.43所示。

图2.43 TortoiseMerge工具首次出现

 

TortoiseMerge工具默认情况下分为左右2个窗口,左窗口显示SVN服务器中最新的数据,因为标题是“Working Base”,右窗口显示本地最新版本的数据,也就是SVN服务器中仓库的工作复本,标题为“Working Copy”。

Step06:在右窗口中的第1行出现加号图标,代表本地复本文件与SVN服务器中的文件进行比较后,发现在第1行里加了一些内容。

Step07:继续操作,将文件f.txt提交到仓库f中去。

2.4.2 图标减号

继续前面章节的操作。

Step01:再次编辑f_checkout文件夹中的f.txt文件,内容如图2.44所示。

图2.44 编辑f.txt内容为添加字符34

 

Step02:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.45所示。

图2.45 减加号图标出现

 

左侧窗口中出现减号图标说明与右侧窗口中的内容相比在第1行上被删除了一些内容,由于TortoiseMerge工具默认是以行为单位来进行比对,所以在左边窗口中会出现减号的图标。

右侧窗口中出现加号图标说明与左侧窗口中的内容相比在第1行上加入了一些内容。

Step03:继续操作,将最新版的数据Commit提交到仓库f中。

2.4.3 图标等号

Step01:再一次编辑f.txt内容如图2.46所示。

图2.46 对f.txt文件添加回

 

Step02:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.47所示。

图2.47 出现等号

 

    左侧和右侧窗口中都出现了等号图标,说明在1234字符后面加入回车并不认为文档被更改了。

Step03:继续操作,将最新版的数据Commit提交到仓库f中。

Step04:继续更改f.txt文件内容如图2.48所示。

图2.48 在f.txt中的第2行添加文本

 

Step05:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.49所示。

图2.49 还是仅仅添加了新的文本并没有出现删除的情况

 

Step06:继续操作,将最新版的数据Commit提交到仓库f中。

2.4.4 图标铅笔

出现铅笔图标,代表此行已经使用TortoiseMerge作为文本编辑器进行了手工修改。

    Step01:继续编辑f_checkout文件夹中的f.txt文件内容如图2.50所示。

图2.50 加入+加号字符

 

Step02:对f_checkout文件夹执行Commit操作,然后在TortoiseMerge工具中手动删除+加号,然后在字符5678后面再输入!叹号,如图2.51所示。

图2.51 直接编辑出现铅笔图标

 

Step03:并单击左上角的Save保存按钮后再对文件f.txt执行Commit命令提交到SVN服务器中。

2.4.5 图标灰色实心圆

    Step01:继续编辑f.txt内容,添加一个空格,效果如图2.52所示。

图2.52 添加一个空格

 

Step02:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.53所示。

图2.53 出现灰色实心圆图标

 

    左右窗口分别出现灰色实心圆图标,代表第2行仅仅添加了空格,并没有添加或删除其它的字符。

Step03:继续操作,将最新版的数据Commit提交到仓库f中,仓库中的f.txt文件也有了空格,效果如图2.54所示。

图2.54 叹号!后面有空格字符

 

2.4.6 同时出现图标减号和加号的情况

    首先声明一下TortoiseMerge是基于行的版本差异和合并的软件,所以它判断有差异的情况也是基于行,也就是说判断差异的最小单位是以“行”计算的。

    Step01:把仓库f中的所有内容进行清空,删除桌面f_checkout文件中的所有内容,包括.svn文件夹。

    Step02:编辑f_data文件夹中f.txt文件的内容如图2.55所示。

图2.55 文件f.txt内容有初始默认值

 

    Step03:将f_data文件夹Import导入到f仓库中,再把f仓库中的所有内容Checkout到桌面的f_checkout文件夹中,并编辑f.txt内容如图2.56所示。

图2.56 对文件f.txt内容进行添加456字符

 

Step04:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.57所示。

图2.57 左减号右加号

 

    前面介绍过,TortoiseMerge是基于行的版本差异和合并的软件,所以在旧内容123的基础上添加456字符,TortoiseMerge认为是将“Working Base”中的第1行全部删除了,然后又在“Working Copy”中添加了“123456”字符,这时就会出现左减号右加号的效果。

2.4.7 有默认值无空行的情况

    Step01:再一次把仓库f中的所有内容进行清空,删除桌面f_checkout文件中的所有内容,包括.svn文件夹。

    Step02:编辑f_data文件夹中的f.txt内容如图2.58所示。

图2.58 光标在3的后面无空行

 

    Step03:将f_data文件夹Import导入到f仓库中,再把f仓库中的所有内容Checkout到桌面的f_checkout文件夹中,并编辑f.txt内容如图2.59所示。

图2.59 对文件f.txt内容进行添加45字符无空行

 

Step04:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.60所示。

图2.60 出现等号和加号

 

    等号代表第3行虽然加入了回车,但并不认为内容被更改,而4和5却是真正新添加的字符,所以出现了加号。

2.4.8 有默认值有空行的情况

    Step01:再一次把仓库f中的所有内容进行清空,删除桌面f_checkout文件中的所有内容,包括.svn文件夹。

    Step02:编辑f_data文件夹中的f.txt内容如图2.61所示。

图2.61 有空行的情况

 

    Step03:将f_data文件夹Import导入到f仓库中,再把f仓库中的所有内容Checkout到桌面的f_checkout文件夹中,并编辑f.txt内容如图2.62所示。

图2.62 对文件f.txt内容进行添加45字符有空行

 

Step04:将最新版的数据Commit提交到仓库f中,单击Commit菜单时在弹出的界面中双击f.txt文件,如图2.63所示。

图2.63 只出现了加号

 

    仅仅新添加了字符4和5,所以只显示出了加号。

2.4.9 图标冲突

有时当更新Update或提交Commit仓库时会有冲突,冲突产生于两人都修改文件的某一部分,解决冲突只能靠人而不是机器。

图标代表文件有冲突,为了验证在出现文件冲突时此图标会显示出来。

Step01:创建名称为g的仓库,并且在桌面创建文件夹g_data,在其内部创建g.txt文件,初始内容是begin,如图2.64所示。

图2.64 创建仓库g和g_data文件夹及文本文件

 

    Step02:对g_data文件执行Import菜单命令,将文件g.txt导入到仓库g中。

    Step03:在桌面创建2个文件夹g_checkout1和g_checkout2,分别对仓库g执行Checkout操作到这2个文件夹中,并更改g_checkout1文件中的g.txt内容如图2.65所示。

图2.65 添加1

 

    Step04:对文件夹g_checkout1执行Commit操作。

    Step05:编辑g_checkout2文件夹中的g.txt文件内容如图2.66所示。

图2.66 添加2

 

    Step06:对g_checkout2文件夹执行Commit操作时出现异常如图2.67所示。

图2.67 版本过期

 

    Step07:单击OK按钮弹出界面如图2.68所示。

图2.68 询问是否Update更新

 

    单击Cancel取消更新,再在Commit界面中单击Cancel按钮取消Commit操作。

    如何解决这样的冲突情况呢?

    Step08:对文件夹g_checkout2执行Update菜单,目的是与SVN服务器中的内容进行同步,弹出界面如图2.69所示。

图2.69 成功发现有冲突的情况

 

    Step09:单击OK按钮关闭窗口。

    Step10:再对文件夹g_checkout2执行Commit菜单,弹出界面如图2.70所示。

图2.70 Commit时出现冲突提示

 

    Step11:双击g.txt文件再次弹出TortoiseMerge软件,如图2.71所示。

图2.71 出现冲突图标

 

在界面中出现3个窗口,左上角窗口代表其它人的代码与SVN服务器中的代码进行对比的结果,而右上角窗口代表现在我的代码与SVN服务器中的代码进行对比的结果,而底部窗口是尝试解决冲突的输出文件。

Step12:手动更改下方窗口中的文本内容如图2.72所示。

图2.72 手动更改冲突

 

Step13:更改完成后单击左上角的Save按钮进行保存,再单击按钮代表此冲突用手动的方式得以解决。

Step14:关闭TortoiseMerge软件界面后显示Commit界面中的内容如图2.73所示。

图2.73 冲突得到解决,字体变成蓝色

 

    Step15:单击OK按钮进行Commit提交,仓库g中的g.txt内容如图2.74所示。

图2.74 人工解决了冲突问题

2.4.10 可以直接单击冲突界面中的Update按钮

    在Commit提交时如果出现文件超时时会出现提示界面如图2.75所示。

图2.75 单击Update按钮

 

    可以直接单击Update按钮来告诉SVN服务器已经有文件发生冲突,单击Update后的界面如图2.76所示。

图2.76 文件发生冲突

 

    单击OK按钮关闭提示,再对Checkout文件夹执行Commit时出现界面如图2.77所示。

图2.77 提示冲突可以使用merge工具进行解决

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值