之前,我一直都是用的SVN作为我日常的版本控制工具,诸如代码啊文档啊之类的东西。至于CVS
这么复古的版本控制工具更是没有机会去尝试。说到SVN控制版本的话,作为托管服务商比较好的就有google code,本人也一直在使用。最近,由于一些项目的原因,了解到了另外一个版本控制工具Hg,当然Hg不是它的原名,原名叫Mercurial
,都是水银的意思,所以通常称呼为Hg。
与集中式版本控制工具SVN不同的是,Hg是一种分布式版本控制工具。除了Hg,还有大名鼎鼎的Git
也是分布式版本控制工具。想要更具体的了解版本控制工具的,推荐阅读胡凯《为什么我们要放弃Subversion
》,
风云《分 布式的版本控制工具
》,猛禽《分 布式版本控制(一)
》 《分 布式版本控制(二)
》,Sparkle《我 与Mercurial 系列等几篇文章
》等。只是想了解Mercurial(Hg)的话,Mercurial官方wiki
已经有很详尽的资料和帮助文档了。
接下来回到本文的正题。本文的起因是Google
Code在早前除了支持SVN托管代码外,更支持了分布式版本控制Mercurial(Hg)来管理你托管在Google
Code上的项目。至于Google为什么在这么多种的分布式版本控制工具中选择了Mercurial而不是Git,这里有一篇文章,推荐阅读一下《Git 与 Mercurial 的分析》
,原文《Analysis of Git and Mercurial》
。
下面,就教大家怎么让Google Code用Mercurial替代Subversion来管理你的项目。
原文 http://code.google.com/p/support/wiki/ConvertingSvnToHg。
在Google Code里设置由Mercurial来管理项目
- 访问你已经存在的google code项目页面,选择 “Administer” 选项页,然后选择下级分类选项页 “Source”。
- 改变第一项Repository type为Mercurial。
- 参照下文介绍的“如何转换Google Code里Subversion的历史记录到Mercurial中”,导入你的代码到 Hg 代码库中
- 以同样的导入代码的方式,导入你的wiki到Hg wiki库中。确认你使用的subversion代码库的wiki路径(例如
http://projectname.googlecode.com/svn/wiki) 以及 Hg
代码库的wiki路径(http://wiki.projectname.googlecode.com/hg/)
在你切换你的项目使用Mercurial管理后,你的旧Subversion项目仍然可以访问,所以在你切换之前你不需要备份你的代码库。你的Subversion版本库将会保持访问: https://projectname.googlecode.com/svn/
如何转换Google Code里Subversion的历史记录到Mercurial中
第一种方式:简要截取
如果你不在乎你原来项目的历史记录,那么你可以简单地从Subversion里的主干代码或者wiki中提取最新的代码然后放到你的Mercurial中。假设你googlecode里的 Mercurial代码库是空的,那么可以这样操作:
$ hg clone https://
projectname.googlecode.com/
hg hg-client
$ cd
hg-client
$ svn
export
--force
http://
projectname.googlecode.com/
svn/
trunk .
$ hg add .
$ hg commit -m
"Initial import of source."
$ hg push
接着转换你的wiki:
$ hg clone https://
wiki.projectname.googlecode.com/
hg hg-client-wiki
$ cd
hg-client-wiki
$ svn
export
--force
http://
projectname.googlecode.com/
svn/
wiki .
$ hg add .
$ hg commit -m
"Initial import of wiki."
$ hg push
第二种方式:完整历史记录转换
如果你要迁移你整个的历史记录,整个过程可能要你更多的参与了。你将会需要先安装一些特殊的工具程序。
安装工具
- ‘hg convert’扩展模块。最新版本的Mercurial已经包含这个模块,请确保你的hg版本为1.1 或者 1.2 或者更高版本。 (可用”hg –version”命令查看) 然后在你的.hgrc里面添加如下代码启用该扩展模块:
[
extensions]
hgext.convert
=
- Subversion的swig-python绑定。请确保您有最近的Subversion安装(1.5或1.6)。绝大部分的
Subversion衍生版本都有与python的绑定,或者提供他们额外的二进制包。你可以运行如下代码检查你的svn –
python的绑定是否正常:
$ python -c
"import svn.core; print svn.core.SVN_VER_MINOR"
5
如果失败,或返回的版本低于5,则肯定是不对的。如果你没有二进制软件包,你可以从Subversion自己的源代码树中建立:
$ svn
checkout http://
svn.collab.net/
repos/
svn/
tags/
1.6.0 svn
$ cd
svn
$ ./
autogen.sh &&
./
configure
$ make
$ sudo
make
install
$ make
swig-py # make sure you have swig 1.3 installed already
$ make
check-swig-py
$ sudo
make
install-swig-py
如果你在Ubuntu的Hardy版本,你可以在hardy-backports里找到1.5版的python-subversion: http://packages.ubuntu.com/hardy-backports/python-subversion
这可能还需要安装backports里的libsvn1, subversion, mercurial-common, 和mercurial 包。
开始转换
现在我们开始转换– branches(分支), tags(标签)以及其他全部:
$ mkdir
hg-client
$ hg convert http://
projectname.googlecode.com/
svn
hg-client
一旦完成转换,你就可以push你最新的历史记录到你的Google Code项目中(前提是你有了一个空的Mercurial版本库):
$ cd
hg-client
$ hg push https://
projectname.googlecode.com/
hg
至此,大功告成。
原址:http://leeiio.me/googlecode-converting-svn-to-hg/
分享到:
相关推荐
共享和管理Git,Mercurial和Subversion存储库的最简单方法。 非常容易安装 无需修改配置文件,SCM-Manager完全可以从其Web接口进行配置 无需Apache,无需安装数据库 中央用户,组和权限管理 对Git,Mercurial和...
Subversion(SVN)是一个开源的版本控制系统,用于管理对软件项目源代码的更改。它在软件开发领域中广泛使用,特别是在多人协作的环境中,帮助团队成员协同工作,跟踪文件的修改历史,以及解决合并冲突等问题。...
Subversion 是一个开源的版本控制系统,它用于管理文件和目录的变更历史,使得...通过理解和掌握 Subversion 的核心概念和操作,开发者可以在团队协作中有效地管理代码,提高开发效率,并确保项目的稳定性和可维护性。
Mercurial和TortoiseHg是一套强大的版本控制系统,尤其适合那些希望管理代码和项目变更的用户。Mercurial,常简称为Hg,是一个分布式版本控制系统,它允许开发者在本地存储完整的代码历史,无需中央服务器。Tortoise...
在某些场景下,我们可能需要将一个项目从 Mercurial 迁移到 Git。本文将详细介绍如何通过“fast-export”工具进行这种转换。 首先,我们需要了解 Mercurial 和 Git 的基本概念。Mercurial 是一种轻量级的分布式版本...
Mercurial_使用教程
Mercurial是一个分布式版本控制系统,与SVN(Subversion)类似,它允许开发者管理代码版本,跟踪变更历史,并进行协作。 描述提到的“实用Python脚本实现hg扩展”,意味着Mercurial扩展通常是以Python编程语言编写...
**Mercurial(Hg)使用参考** Mercurial(Hg)是一种分布式版本控制系统,它使得多人协作开发和管理代码变得更为简单高效。在软件开发过程中,版本控制工具是必不可少的,它们可以帮助开发者追踪代码的修改历史,...
Mercurial是用Python语言编写的,这使得它在跨平台支持上表现出色,可以在多种操作系统上运行,包括Windows、Linux和macOS。Python的丰富库和简洁语法使得Mercurial的开发和维护变得更加便捷。 **x86架构** `x86`...
sourceTree1.4.0 可能需要使用的插件 Mercurial
《版本控制工具Mercurial权威指南》作为一本专注于Mercurial版本控制系统的书籍,其涉及的内容十分广泛,从基础的版本控制概念,到具体的Mercurial工具使用,再到与其它版本控制系统的比较以及分布式版本控制的优势...
Mercurial是一款分布式的版本控制系统,最初版本发布于2005年4月,虽然相比其他分布式版本控制系统如Git来说出现较晚,但其在设计之初就吸收了许多前辈的优点,因此在功能性和用户体验上都有不错的表现。 **主流...
Mercurial是一种分布式的版本控制系统,它允许用户在本地计算机上管理项目历史,而无需依赖于中央服务器。这为开发者提供了灵活性和速度,尤其是在网络不稳定或不可用的情况下。Mercurial不仅支持离线工作,还能够...
1. **安装Mercurial**:在服务器上安装Mercurial软件包,可以通过操作系统自带的包管理器或从官方网站下载源码编译安装。例如,在Ubuntu上,可以使用`apt-get install mercurial`命令进行安装。 2. **创建仓库**:...
- **高效性:** Mercurial在处理大型项目时表现出了良好的性能,尤其是在处理大量的版本历史数据方面。 - **易用性:** 相较于其他版本控制系统如Git或Subversion,Mercurial的命令行界面更为直观且易于学习。 - ...