如何解决 Mercurial 版本冲突
什么是版本冲突
当两个工程师都对版本库中的同一个文件中的同一行内容都进行了修改,而且其中一位工程师已经用 "hg push" 命令将这个变更集(changeset)推入到版本库中, 当另外一位工程师要向该版本库推入另外一个变更集时,Mercurial会自动发现来自这两个工程师的变更集有冲突,而拒绝第二位工程师对版本库的推入操作。提示大致如下:
pushing to /ws/tmp/hellosearching for changesabort: push creates new remote branches!(did you forget to merge? use push -f to force) 注意: 此时,第二位工程师仍然可以用 "hg push -f" 命令,强行将它的变更集推入远程版本库,但是我们规定原则上不得进行这样的操作。 版本库的冲突应及时与有关工程师,项目主管协同解决。
解决冲突
当你对远处版本库的推入操作被拒绝时,说明你的修改和远程版本库中的内容有冲突,此时应该用 "hg pull" 命令将远程版本库中的内容拉入到你的版本库中, 当远程版本库的内容被拉入时,hg 同样会自动发现你的版本库中有内容冲突而提示解决,如:
$ hg pullpulling from /ws/tmp/hellosearching for changesadding changesetsadding manifestsadding file changesadded 1 changesets with 1 changes to 1 files (+1 heads)(run 'hg heads' to see heads, 'hg merge' to merge)...$ hg mergeMercurial 推荐使用第三方的专门的合并工具来解决版本冲突。如果你的工作机上没有安装第三方合并工具,则 hg 会自动弹出默认的文本编辑工具来显示并提示编辑冲突, 我们可以手动在文本工具上编辑冲突的文本块,但不推荐这个方法,如:
/* * This is C file for hg example<<<<<<< /ws/tmp/hello2/hello.c * second desc line from hello2======= * second desc line for hello1>>>>>>> /tmp/hello.c~other.eWVR_T */#include <stdio.h> 最好的方法是安装第三方的合并工具来编辑冲突。
安装和使用第三方合并工具
Mercurial 支持很多的第三方合并工具,譬如:
•meld - Meld,著名的文件合并工具
•tkdiff - tkdiff,可以在 Windows 下使用
•kdiff3 - kdiff3, KDE 图形界面下的合并工具
•xxdiff
•TortoiseMerge - TortoisySVN,也是 Windows 下的合并工具。
你可以选择一种你喜欢的来安装,并配置 ~/.hgrc 文件,下面以使用 Gentoo Linux 下的 Meld 为例子:
# emerge meld /* 安装 Meld */修改 ~/.hgrc 文件:
[ui]username = Luo Zheng Rong <vortune@gmail.com>merge = meld /* 指定用什么工具作为合并工具 */安装并配置第三方合并工具后,当我们运行 "hg merge" 命令,且有版本内容冲突的时候,hg 会自动弹出第三方合并工具, 形象地显示冲突,并且我们可以在工具中直接编辑文件,如下图:
编辑完冲突的文本块并保存之后,我们就可以提交合并过的变更集,并推入远程版本库:
$ hg commit -m "Merge conflict from tow heads"$ hg push
回滚拉入操作
当我们发现有版本内容冲突时,应该和你的协作者充分沟通,统一意见之后再进行合并操作,此时 如果你不想立即处理冲突,在你执行 "hg push" 命令之前,可以回滚最后一次的拉入操作:
hg rollback 管理和解决冲
分享到:
相关推荐
在Windows使用apache搭建Mercurial版本控制服务。 Mercurial是分布式的版本管理系统,这个文档将教你怎样搭建Mercurial服务器,并试用apache的用户管理来配置Mercurial服务器的用户和权限。
Mercurial 分布式版本控制系统 部署 server 服务
分布式版本控制系统_Mercurial
mercurial版本控制工具手册
该插件是解决Mercurial:Hg检出的时候:The system cannot find the path specified 报错的问题
mercurial 版本控制工具的eclipse插件。 里面含有1.4和1.5版本。1.4for eclipse3.3-,1.5for3.4+ for eclipse 3.5+。 插件安装时,我们只需在eclipse根目录下新建一个【links】目录,然后在里面创建【.link】扩展名...
Mercurial是一个跨平台的分布式版本控制软件,主要由Python语言实现,但也包含一个用C语言实现的二进制比较工具。Mercurial一开始的主要运行平台是Linux,现在Mercurial已经被移植到Windows、Mac OS X和大多数的类...
sourceTree1.4.0 可能需要使用的插件 Mercurial
Mercurial 2.1.1 Inno Setup installer - x86 Windows Mercurial 是一种轻量级分布式版本控制系统,采用Python 语言实现,易于学习和使用,扩展性强。安装程序不需要管理员权限。
SublimeHg 可以让你在 Sublime Text 编辑器中使用 Mercurial 版本控制系统。 标签:SublimeHg
Mercurial_使用教程
mercurial安装包1.8.4 分布式版本管理工具
Mercurial的简单入门
版本控制工具mercurial权威指南 这个和git基本一样,学会它git也就拿下了
Mercurial是一款专业好用的轻量级分布式版本控制系统。软件采用Python 语言,基于 GNU General Public License (GPL) ,更加方便你的管理和使用,有更优秀的系统,而且对网络的依赖程度也降低了非常多。如果您对目前...
Mercurial(Hg)使用参考
打造安全的分布式版本管理系统,Mercurial+IIS+Active Directory+SSL
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。
mercurial-3.7.1-x86.msi 最新的windows安装包,
TortoiseHg,V5.1.0,64 位。Mercurial 客户端。。。。。。。。。。。。。。。