`
xiao
  • 浏览: 162355 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Mercurial, 分支与合并很简单

阅读更多

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”标签,可以用视觉化的方式看到之前所有分支合并的图形记录囉!

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

分享到:
评论

相关推荐

    mercurial 3.3.2 源码

    Mercurial的主要设计目标包括高性能、可扩展性、分散性、完全分布式合作开发、能同时高效地处理纯文本和二进制文件,以及分支和合并功能,以此同时保持系统的简洁性[1]。Mercurial也包括一个集成的Web界面。 ...

    vscode-hg:用于Visual Studio Code的集成Mercurial源代码控制

    分支,合并头,与分支合并,解析+解析文件。 快速切换分支,通过状态栏推拉。 支持命名分支或书签工作流。 自动进/出计数器。 撤消/回滚。 搁置/搁置支持。 清除支持。 调整支持。 反馈与贡献 请通过报告...

    openjdk-mirror-meta:Mercurial->github openjdk 镜像脚本

    OpenJDK Github 镜像 这个存储库包含我一直试图一起破解的脚本,以便定期和轻松地将 ... 这表明一个有用的镜像策略可以将共享历史的 mercurial 存储库合并到一个单独的 github 存储库中,例如具有许多分支的单个jdk存

    PyCharm安装教程及实际例子.zip

    PyCharm支持与Git、Mercurial等版本控制系统的集成。你可以直接在PyCharm中管理代码版本、进行代码提交、拉取和合并等...最后,你可以将你的分支合并到主分支(Master Branch)上,并与其他开发者共享你的代码更改。

    PyCharm安装教程及实际例子1.zip

    PyCharm支持与Git、Mercurial等版本控制系统的集成。你可以直接在PyCharm中管理代码版本、进行代码提交、拉取和合并等...最后,你可以将你的分支合并到主分支(Master Branch)上,并与其他开发者共享你的代码更改。

    sourcetree最新版本

    SourceTree中文版是一款强大的Git/Mercurial桌面客户端,支持mac系统合Windows系统,今天小编带来的是Windows版的,SourceTree中文版的美观界面更是其他类型的软件所无法媲美的,软件简化了用户与与Git和Hg库的交互...

    hg-export-tool:一种在本地将汞库转换为git库的工具,可解决github的importer和`hg-fast-export`中的某些缺陷。

    答:它不会导入带书签/匿名的标头,并且它会随机导致合并提交的父级提交顺序错误,从而导致错误的概念,即哪个分支合并到哪个分支中,从而导致使用图的使用量减少以及对diff的使用不正确合并提交。 前一个问题是...

    spaceship-prompt:宇航员的 Zsh 提示

    :rocket: :star: 飞船 ZSH提示宇航员。| | | |由Denys Dovhan和贡献者使用 :red_heart:︎构建Spaceship 是一个简约、强大且高度可定制的Zsh提示。 它结合了您方便工作所... 当前 Mercurial 书签/分支和丰富的回购状态:

    u8glib:u8glib 的镜像

    upstream分支旨在跟踪原始 Mercurial 存储库的默认分支。 更新是手动完成的。 Branch master提供此文件并从upstream合并。 可能存在其他分支。 进口明细 初始创建是使用以下命令完成的: git clone git://repo....

    msaccess-vcs-integration:[已失效] 使用版本控制系统同步您的访问表单、宏、模块、查询和报告

    msaccess-vcs-integration 使用版本控制系统同步您的访问表单、宏、模块、... 这是为了确保您在使用 Mercurial 等工具进行分支、合并和比较时不会遇到问题,这些工具。 此自述文件展示了如何将 Access 应用程序中的

    Commit:提交消息编辑器

    犯罪 提交是一种编辑器,可帮助您编写更好的Git和Mercurial提交消息。 安装 然后 flatpak install re.sonny.Commit ...支持git commit消息,合并消息,标记消息,添加-p消息和重新设置-i消息 支持Mercurial提

    Syllabus:课堂教学大纲就住在这里。 确保观看此存储库,以便在情况发生变化时通知您

    通过协作,VCS和开源软件(CS 491/591)可维护且可扩展的系统课堂教学大纲就住在这里。 请确保观看此存储库,以便在事情发生变化时得到通知。...行更改跟踪,来源推,拉,克隆,提交Git-忽略,分支/合并,gitfl

    Git代码提交流程及git命令汇总(基础篇)

    基本了解 git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动。...自己用Git有一段时间了,随着项目越来越多,功能分支也随之增加,从简单的基础命令到随心所欲,需要自己不断地去尝试总结,

    改之理java源码复制-javersion:Java的数据版本控制库

    任何可以使用简单的不可变键和值映射到Map东西都可以进行版本控制 - 包括例如普通的旧 Java 对象和 JSON。 想想你最喜欢的 VCS(例如 git、mercurial 或 svn)来了解 Javersion 支持哪种版本控制: 共享资源的并发...

Global site tag (gtag.js) - Google Analytics