1. Mercurial简介
对于软件开发项目,管理源代码的重要性只略低于编写代码的重要性。用于项目源代码管理的软件和解决方案也有很多。现在越来越多的项目,尤其是开源的项目,开始使用分布式代码管理系统。相比传统的集中式的代码管理系统来说,分布式的具有如下优点:
-
更轻松的管理
传统的版本控制系统使用集中式的仓库,一些仓库相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,每个用户管理自己的仓库,管理员只需协调同步这些仓库。
-
更健壮的系统
分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。
-
对网络的依赖性更低
由于同步可以放在任意时刻进行,分布式的代码管理方式允许离线进行管理,只需在有网络连接时同步。
现在分布式管理的系统也很多,下面列举了一些有大型项目使用的:
系统名
实际项目
SVK
RoR;Wine;…
Mecurial
Mozilla;Open Solaris;Xen;wget;ZFS…
Bazaar-NG
Ubuntu; Launchpad;moin-1.6;Drupal;用户列表...
Arch
Debian;moinmoin…
git
linux-2.6
Monotone
Pidgin(Gaim)
Darcs
DuKuWiki;Psi ;prototype;…
这里主要是介绍Mercurial的一些基本使用并且不会涉及与其他分布式管理系统的比较。
Mercurial是一种轻量级分布式版本控制系统,采用 Python语言实现,易于学习和使用,扩展性强。Mercurial的指令是hg … (如果有人问为什么是hg,那么可以查询下初中化学课本最后附录的元素周期表J)。常用命令的使用可以参考这里中文版的教程:http://mercurial.selenic.com/wiki/ChineseTutorial
下面部分主要是介绍TortoiseHg,这是GUI界面的Mercurial,我相信Windows上的大多数使用Mercurial的用户会更加喜欢使用带GUI界面的软件而不是单纯的命令行。
2.TortoiseHg的使用入门
安装:
TortoiseHg的安装没什么好说的,在这里http://tortoisehg.bitbucket.org/下了Windows的MSI安装程序之后一路next过去就好。安装完成之后需要重启一下。(注:不充启也可以使用,只是一些Windows Shell的扩展功能比如通过图标标记文件状态是最新版本或者过期版本等功能就无法展现)
新建一个仓库:
• 创建一个新的文件夹用来存放代码
• 进入这个文件夹,在右键菜单里选择TortoiseHg的“Create Repository Here”命令
• 点击“Create”按钮创建
为现有仓库创建一个副本:
• 创建一个新的文件夹用来存放仓库副本的代码
• 进入这个文件夹,在右键菜单里选择TortoiseHg的“Clone”命令
• 输入原仓库的地址创建本地副本
• 地址可以是远程的
• 也可以是本地的
修改并提交:
• 查看文件状态
TortoiseHg通过不同的图标展示文件的状态,有更新的文件一目了然
• 在右键菜单里选择Hg Commit命令并输入注释来提交我们的修改
与其他人分享改变:
• Mecurial里的每次提交就是一个版本
• 可以通过导出功能(Export)导出每个版本与上一版本相比修改的部分作为一个“补丁”分享给其他人
• 其他人收到补丁之后可以导入(Import)自己的仓库以获得这个更新
• 补丁也可以批量导出/导入
合并代码:
• 导出/导入的功能比较便于交流但是有些局限性,特别是无法正确出去需要合并的代码(即不同的人对通一个文件有修改)。
• 可以通过Pull/Push功能在代码仓库间分享改变并正确处理需要合并的部分
• Pull/Push功能可以在本机的仓库间分享改变,也可以通过SSH和HTTP/HTTPS与远程机器分享改变
• TortoiseHg自带了一个HTTP Server,可以容易的与远程机器的仓库间分享代码
• Pull或Push的代码会以不同分支的形式出现,需要与本地代码合并,如果有多个分支,需要每个分支与本地代码依次合并
• 合并可能会遇到冲突的情况,Mecurial提供多种解决冲突的办法
版本发布:
选择需要发布的版本,归档发布
3.参考资料
Google的《Analysis of Git and Mercurial》
Mercurial使用教程
TortoiseHg文档