使用 HG 来作为代码管理工具
2016-03-10 00:00
281 查看
摘要: 使用 HG 来作为代码管理工具
如果你要配合 Subversion 来使用 HG,官方提供了三种方式,各位可以根据自己的喜好选择。我们这里选择 hgsubversion 插件的方式。
使用 TortoiseHg 有下面几个要迅速掌握的东西:
点鼠标右键,点击 "Hg WorkBench" 可以获得详细的提交日志、版本信息,以及版本树示意图。
点鼠标右键,点击 "TortoiseHg" ==> "Synchronize",可以与服务器的数据进行同步,里面有若干个选项需要注意。
命令 $ hg commit 是用来提交代码到本地仓库,如果要同步修改到服务器,则需要用 $ hg push 命令才行。
经常在版本信息里出现的名词 tip 是指最新版本号,这个是内置的标签(tag)。
每一个分支的最新版本号被统称为 head 。
如果已经提交了代码,需要回滚代码,则用命令 $ hg rollback ;如果你只是作了修改还没有提供代码到本地分支,则可以直接用命令 $ hg revert 去丢掉未提交的修改。
配置 hgrc 文件,让 hg 找到 hgsubversion 这个插件。如果你用的是 TortoiseHg ,可以直接在 Hg Workbench 界面里的 setting 里进行操作,里面有一个大大的*编辑文件*按钮。
在配置文件里,添加下面的内容。
注意,这里要设置到子目录 hgsubversion 里,否则会提示找不到 hgsubversion 这个插件。
如果你想看看这个插件是否安装好了,可以试一下这个命令:
看提示你就知道是否一切正常了。
如果你填入 SVN 地址的时候,碰到以下问题:
这是因为你的路径里包含有中文字符串,这在 SVN 的 URL 里严格来说是要用很多转义字符来表达的。如果你把
改为svn路径:
就能够顺利检出 SVN 文档。
什么?你不知道怎么获得这个地址,你可以查看你 SVN 里的记录。
要提交修改回 Subversion 服务器很简单,需要先确保修改都提交到了本地的 Hg 服务器里:
然后再把 hg 里当前的代码版本提交到 Subversion 服务器里:
这样,你就可以把你修改的代码提交到 SVN 代码服务器里了。不信,你到 SVN 代码目录里 update 一下看看!
这个副本是一个新的分支,内容完全和 SVN 上最新版本相类似;而你本地修改的代码,将放在另外一个代码分支上。
你可以通过点击右键 ==> "Hg Workbench" 来查看这个代码树分支。
出现类似的情况,你需要做的是,选择一个代码分支作为你的当前分支继续工作;或进行相应的合作操作。
有关这个问题,浏忙绪绪我专门写了一个博文《把 SVN 文档导入到 Hg 后目录为空的问题》来论述,嘿嘿~~
这个时候,你可以考虑用 hgsvn 来做本地的代码版本管理,平时都提交到本地的代码仓库里,一旦工作完成,则提交到 SVN 版本库里。
http://cn.waterlin.org/ProjectManagement/Hg.html
1 用 HG 配合 SVN 代码仓库进行版本管理
如果你们公司是用 SVN 作为代码仓库的话,肯定经常碰到一个问题,没有写好的代码、没有经过仔细测试的代码,没有提交到代码仓库的信息,免得影响其他人的使用。1.1 首先安装 hg
如果你是在 Windows 下,推荐使用 TortoiseHg 客户端,理由无需多说。如果你要配合 Subversion 来使用 HG,官方提供了三种方式,各位可以根据自己的喜好选择。我们这里选择 hgsubversion 插件的方式。
1.2 TortoiseHg 几个使用小技巧
一般来说,会使用 Subversion 的人,使用 TortoiseHg 都会上手特别快,这里有一份为 SVN 熟手准备的 Hg 简明教程。使用 TortoiseHg 有下面几个要迅速掌握的东西:
点鼠标右键,点击 "Hg WorkBench" 可以获得详细的提交日志、版本信息,以及版本树示意图。
点鼠标右键,点击 "TortoiseHg" ==> "Synchronize",可以与服务器的数据进行同步,里面有若干个选项需要注意。
命令 $ hg commit 是用来提交代码到本地仓库,如果要同步修改到服务器,则需要用 $ hg push 命令才行。
经常在版本信息里出现的名词 tip 是指最新版本号,这个是内置的标签(tag)。
每一个分支的最新版本号被统称为 head 。
如果已经提交了代码,需要回滚代码,则用命令 $ hg rollback ;如果你只是作了修改还没有提供代码到本地分支,则可以直接用命令 $ hg revert 去丢掉未提交的修改。
2 用 hgsubversion 插件来配合 SVN 使用 Hg
2.1 安装 hgsubversion 插件
安装 hgsubversion 插件,最简单的方法,不外乎直接把这个插件 clone 下来,官网上已经把标准的命令行方法讲清楚了。我这里截一张 Windows TortoiseHg 的图下来,看看:配置 hgrc 文件,让 hg 找到 hgsubversion 这个插件。如果你用的是 TortoiseHg ,可以直接在 Hg Workbench 界面里的 setting 里进行操作,里面有一个大大的*编辑文件*按钮。
在配置文件里,添加下面的内容。
[extensions] hgsubversion = D:\Program Files\TortoiseHgExtentions\hgsubversion\hgsubversion
注意,这里要设置到子目录 hgsubversion 里,否则会提示找不到 hgsubversion 这个插件。
如果你想看看这个插件是否安装好了,可以试一下这个命令:
hg help hgsubversion
看提示你就知道是否一切正常了。
2.2 从 SVN 里 clone 一份代码出来
下面可以检出系统代码了!点击鼠标右键,在 Hg 菜单里点击 clone 选项,按下图所示填写SVN检出信息:如果你填入 SVN 地址的时候,碰到以下问题:
% hg clone --verbose svn+https://127.0.0.1/svn/TestProject/01项目文档 -- E:\test\testhg 中止: URL 'https://127.0.0.1/svn/TestProject/01项目文档' is malformed or the scheme or host or path is missing (SVN_ERR_RA_ILLEGAL_URL) [command returned code 255 Thu Apr 14 15:10:06 2011]
这是因为你的路径里包含有中文字符串,这在 SVN 的 URL 里严格来说是要用很多转义字符来表达的。如果你把
https://127.0.0.1/svn/TestProject/01项目文档
改为svn路径:
https://127.0.0.1/svn/TestProject/01%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3
就能够顺利检出 SVN 文档。
什么?你不知道怎么获得这个地址,你可以查看你 SVN 里的记录。
2.3 从本地 Hg 分支提交修改到 Subversion 服务器
通过 hg 你在本地修改了代码,当修改完成并全部通过测试后,你一定要提交回 Subversion 服务器,这样别人才能看到你的代码。要提交修改回 Subversion 服务器很简单,需要先确保修改都提交到了本地的 Hg 服务器里:
$ hg commit -m 'your log info'
然后再把 hg 里当前的代码版本提交到 Subversion 服务器里:
$ hg push
这样,你就可以把你修改的代码提交到 SVN 代码服务器里了。不信,你到 SVN 代码目录里 update 一下看看!
2.4 SVN 有更新后 Hg 的状态
如果SVN服务器上的内容有更新,则你在 hg 里用命令从SVN再次更新最新的内容到本地 hg 分支后,将会得到一个奇怪的副本。这个副本是一个新的分支,内容完全和 SVN 上最新版本相类似;而你本地修改的代码,将放在另外一个代码分支上。
你可以通过点击右键 ==> "Hg Workbench" 来查看这个代码树分支。
出现类似的情况,你需要做的是,选择一个代码分支作为你的当前分支继续工作;或进行相应的合作操作。
2.5 其它疑问
为什么 clone 完了以后,却没有文件呢,目录里只有一个 .hg 目录?有关这个问题,浏忙绪绪我专门写了一个博文《把 SVN 文档导入到 Hg 后目录为空的问题》来论述,嘿嘿~~
3 用 hgsvn 来与 SVN 代码进行交互
如果用上面的方法,显得麻烦一些。如果我只是想维护一个本地的代码仓库,用来临时做一个修改,测试没问题的时候,我再提交到 SVN 仓库里。这个时候,你可以考虑用 hgsvn 来做本地的代码版本管理,平时都提交到本地的代码仓库里,一旦工作完成,则提交到 SVN 版本库里。
http://cn.waterlin.org/ProjectManagement/Hg.html
相关文章推荐
- tortoiseHg 网址
- TortoiseHg使用(hg mercurial repository management)
- 突击Mercurial SCM(HG)12---解决repository is unrelated的问题
- Hg 水银的配置
- 各种SCM工具下使用http代理下载源码
- Mercurial(hg)
- 搭建APACHE+HG-权限控制
- hg客户端密码配置说明.docx
- Hg使用入门
- TortoiseHg 命令
- android代码管理工具 HG Mercurial commit之前没有pull,冲突解决
- hg命令
- hg 使用命令
- HG 常用命令
- 关于Thinkphp二维数组循环输出问题
- 小代码
- Eclipse launch configuration----Eclipse运行外部工具
- 怎么看java程序的运行时间
- 快速掌握Lua 5.3 —— 操作系统库
- git贡献代码流程