Mercurial(Hg) 一直是我很爱用的版本控制工具。以前自己最常用的用途是拿来取代 svn,单纯享受单机/离线使用版本控制系统开发的乐趣。
要单机使用版本控制系统开发,照着水银分布式版本控制系统的使用概念做就行了。
最近看了Hg init和ProGit两份分别讲Hg和Git分布式版本控制的书,里面都相当推崇“分支(Branch)开发”的概念。
所谓“分支开发”,就是将主干(trunk)保持在稳定可运作的版本(虽然本来就该这么做),在开发任何新功能时都另建新分支(branch),开发到一段落之后再合并回主干。能支援这样的开发模式,是因为Hg或Git这些分布式版本控制系统做开分支、合并等动作的额外开销都很低。
那么要实际使用时该怎么做呢?
开分支
我有一个名为“ZAKU”(萨克)的目录,主干版本代号为3, 现在要实作一个将绿色变成红色的功能,这时我们可以建立一个新分支来继续开发这个新功能。分支命令的格式为:
$ hg branch [branch name]
因此要建立一个名为“red”的分支,可以使用以下命令:
$ hg branch red
marked working directory as branch red
这么一来,之后 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”标签,可以用视觉化的方式看到之前所有分支合并的图形记录囉!
学会分支与合并后,你的开发效率会不会也变成三倍速哩?
分享到:
相关推荐
尽管Git在某些方面(如分支管理、rebase功能)更具优势,但Mercurial的简单性和易用性使其成为许多项目的首选。 对于初学者,可以免费托管代码的平台有多个选择。GitHub是Git的首选,但不直接支持Mercurial,尽管...
Mercurial(Hg)是一种分布式版本控制系统,它使得多人协作开发和管理代码变得更为简单高效。在软件开发过程中,版本控制工具是必不可少的,它们可以帮助开发者追踪代码的修改历史,解决冲突,并进行回退或分支操作...
合并分支时,Mercurial提供了一些工具帮助处理冲突,如`kdiff3`(Linux/mac)和`WinMerge`(Windows)。通过编辑`.hgrc`文件,可以配置这些工具: ```bash [extensions] hgext.extdiff= [extdiff] cmd.kdiff3= ...
1. **分支和合并**: Mercurial允许用户轻松创建和合并分支,这对于并行开发和实验新特性至关重要。 2. **轻量级**: 相对于其他版本控制系统,Mercurial的元数据存储更小,这使得它在处理大型项目时速度快且资源占用...
分支与合并: Mercurial支持轻量级分支,通过`hg branch`命令创建,允许同时进行多个开发线。使用`hg merge`命令可以合并不同分支的更改。在合并时,如果出现冲突,Mercurial会提示用户手动解决。 Mercurial的扩展...
Mercurial的主要设计目标包括高性能、可扩展性、分散性、完全分布式合作开发、能同时高效地处理纯文本和二进制文件,以及分支和合并功能,以此同时保持系统的简洁性[1]。Mercurial也包括一个集成的Web界面。 ...
Git 是 Linus Torvalds 为 Linux 内核开发而创建的,它的功能更加强大,支持分支和合并操作,以及大规模的项目协作。由于 Git 在社区支持和生态系统上的优势,许多开发者选择将其作为首选的版本控制工具。 要将 ...
- **分歧的更名与合并:** 当不同分支中有相同的文件被重命名时,Mercurial会正确地识别这些更改并进行合并。 #### 总结 通过以上知识点的总结,我们可以看到Mercurial不仅是一种强大的版本控制系统,还具有简单...
Mercurial是一款强大的分布式版本控制系统,它允许开发者在本地存储代码的完整历史记录,并通过网络与其他用户的代码库进行同步。这种工作方式提高了开发效率,增强了协作能力,同时也提供了灵活的分支管理和冲突...
虽然这个版本相对较旧,但它仍然包含了Mercurial的基本功能,如提交、更新、合并和分支管理等。 **安装包格式** 这个安装包是以`.zip`格式提供的,`.zip`是一种常见的文件压缩格式,它允许将多个文件打包成一个...
而“git 分布式 mercurial”的标签,则将Mercurial与另一种著名的DVCS——Git进行了关联,暗示我们将对比两者之间的异同。 Mercurial的核心概念在于其分布式特性。与集中式的版本控制系统(如CVS或SVN)不同,每个...
- **修订历史、分支与合并**:理解这些概念对于有效使用Mercurial至关重要。 - **工作目录**: - **提交时发生的事情**:了解提交背后的过程。 - **创建新顶点**:每次提交都会创建一个新的顶点,代表项目的当前...
2. **分支与合并**:Mercurial支持轻松创建和管理分支,允许并行开发。开发者可以在自己的分支上独立工作,完成后通过合并操作将更改集成到主分支。 3. **离线工作**:由于Mercurial是分布式的,你可以在没有网络...
3. 强大的分支和合并:Mercurial允许轻松创建、切换和合并分支,使得协同开发变得简单。 4. 高效性能:Mercurial采用增量存储,只保存文件的修改部分,大大减少了存储和传输的开销。 5. 兼容性:Mercurial可以与...