Browsed by
标签: bitbucket

从HG迁移库到Git

从HG迁移库到Git

迁移工作比较简单,参考BitBucket推荐的一篇blog,基本操作与该博主的描述一致,部分有些差异。

以下操作基于Debian系统。

首先安装mercurial-git,这个工具会自动将原hg库的信息提交给新的Git库,会保留以前commit的comment内容,这点尤为重要。如果不关心以前的comment,就没啥好说了,直接将整个代码提交给Git就完事了。

sudo apt install mercurial-git

接着需要让 HG 知道有 mercurial-git 这个扩展,并能操作Git库。 修改~/.hgrc文件,添加以下内容即可:

[extensions]
hgext.git=

如果希望将HG的branch也转化成Git中的branch,则需要做一些稍显古怪的操作。请注意:HG中的branch不对应Git的branch!我不太清楚是HG的问题,还是 mercurial-git 这个工具的问题,需要为每个分支设置bookmark,然后根据这些bookmark转换成Git中的branch。

例如,将HG库中的default、mss_v36、mss_v36_dev三个分支,分别对应Git库中的master、mss_v36_hg 以及 mss_v36_dev_hg 分支:

hg bookmark -r default master
hg bookmark -r mss_v36 mss_v36_hg
hg bookmark -r mss_v36_dev mss_v36_dev_hg

然后,直接推送到Git的远端库即可:

hg push git+ssh://git@bitbucket.org:my_account/my_apps.git
Bitbucket/Mercurial在Debain8上的一点小问题

Bitbucket/Mercurial在Debain8上的一点小问题

由于Debian 7已经被无情地终结了生命周期,因此不得不将部分生产环境升级到Debian 8。总体上还比较顺利,在mercurial库方面遇到点问题,记录如下:

问题1:UnicodeDecodeError: ‘ascii’ codec can’t decode

这是Python脚本编码的问题。一个好的py脚本,应该在脚本起始处就标明编码方式,可惜mercurial的很多脚本没有这么做。Debian 8采用Python 2.7.9,默认是ascii编码,需要修改为默认utf-8编码。注意,Debian 8安装了多个Python版本,首先要确认默认版本号:

python -V

接着修改“/etc/python2.7/sitecustomize.py”文件(如果没有的话,可以手工创建一个),在文件起始处添加以下代码:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

问题2: [SSL: WRONG_VERSION_NUMBER] wrong version number

Bitbucket网站禁止了有缺陷的TLSv1,TLSv1.1加密方式,奇怪的是mercurial为什么没有根据协商采用SSL或者TLSv1.2? 修改方式也简单,强制mercurial禁止掉TLS。修改“/etc/mercurial/hgrc”,增加以下内容:

[ui]
tls=False