Mercurial, 分支与合并

Mercurial(Hg) 一直是我很爱用的版本控制工具。以前自己最常用的用途是拿来取代 svn,单纯享受单机/离线使用版本控制系统开发的乐趣。

要单机使用版本控制系统开发,照着水银分布式版本控制系统的使用概念做就行了。

最近看了Hg init和ProGit两份分别讲Hg和Git分布式版本控制的书,里面都相当推崇“分支(Branch)开发”的概念。
所谓“分支开发”,就是将主干(trunk)保持在稳定可运作的版本(虽然本来就该这么做),在开发任何新功能时都另建新分支(branch),开发到一段落之后再合并回主干。能支援这样的开发模式,是因为Hg或Git这些分布式版本控制系统做开分支、合并等动作的额外开销都很低。

那么要实际使用时该怎么做呢?
有时我们的代码仓库中可能有无用的或者不需要代码分支,我们可以用过下面的方法来删除那个分支
(1)windows平台
在windows平台上hg提供了gui,使用起来非常方便。
在代码仓库目录空白处点击鼠标右键,打开TortoiseHg->Global Settings,会弹出一个对话框,里面有两个选项卡,一个是全局的仓库设置,一个是当前代码仓库的设置。
根据需要选择你想设置的仓库选择卡并选择选项卡左边的“扩展”项,在一个叫“mq”的项前打上勾。点击ok保存结果。
在代码仓库目录空白处点击鼠标右键,打开Hg WorkBench,选中你不要的代码分支,点击鼠标右键,选中“Modify history->Strip” ,会弹出一个对话框让你确认是否真的要删除和一些删除选项,选择好后点击“Strip”按钮即可删除。

(2)Linux平台
Linux平台上hg的全局配置默认放在~/.hgrc中,每一个具体的代码仓库的设置则放在代码仓库目录下的.hg/hgrc中.
只要在配置中加入下面的的代码即可计划插件mq
[extensions]
mq =

注意:删除分支只是删除了本地的分支。如果服务器上的分支还在,下次更新代码后,本地依然会再出现那个分支。

开分支

我有一个名为“ZAKU”(萨克)的目录,主干版本代号为3, 现在要实作一个将绿色变成红色的功能,这时我们可以建立一个新分支来继续开发这个新功能。分支命令的格式为:
$ hg branch [branch name]

因此要建立一个名为“red”的分支,可以使用以下命令:
$ hg branch red
marked working directory as branch red
之后commit
这么一来,之后 commit 的 code 都会进入“red”这个分支了。

查看状态

在 commit 进一些 code 之后(版本代号到13),输入“hg branchs”命令可以列出所有版本

$ hg branches
default 3:e2287f9031a1 (inactive)
red 13:e590de4b0dc9

切换分支

在开发新功能的同时,也可能会碰上整个专案共通的bug,以前老派的作法是再 check out 一份主干的程式码,然后两边修正,现在有了hg, 只要先暂时切换回主干,把bug修正了再合并回分支(或到时一次把分支合并回主干)。

要切换回主干,输入“hg update default”即可。

$ hg up default
4 files 已更新, 0 files 已合并, 3 files 已移除, 0 files unresolved

合并

当我们把“red”分支中的新功能做好后,可以很容易地将这些修改合并回主干。

首先,用上面的方法切换回主干,然后输入“hg merge red”,即可将“red”分支中的修改加进主干。

$ hg merge red
5 files 已更新, 0 files 已合并, 0 files 已移除, 0 files unresolved
(branch merge, don’t forget to commit)

合并命令的格式为

hg merge [branch name]

合并完后确认没问题,就将程式码再 commit 进版本库吧!

One more thing

同样的方法,我们可以再建立一个分支“horn”来开发长角的功能,然后再将“horn”分支合并回主干。

别忘了hg还有提供一个离线网页浏览功能,输入“hg serve -p 5000”,在浏览器上输入“http://localhost:5000”就能看到类似 gitweb 的版本控制讯息网页。点选左侧的“graph”标签,可以用视觉化的方式看到之前所有分支合并的图形记录囉!

学会分支与合并后,你的开发效率会不会也变成三倍速哩?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值