这几天没事干净搞迁移了,迁移完MVC又迁移版本库,还把工作电脑迁移了一下,开始用Win8.1了。这个迁移主要是因为实在不想在工作电脑上又装git又装hg了,点个右键出来一大堆菜单,况且现在git已经成为名符其实的“最高大上的分布式版本控制系统,没有之一”了,关键还是感觉git好用、用的顺手,就做了一个痛苦的决定:把hg干掉!XD
废话不多说,言归正传。
这个迁移其实很简单,就是使用fast-export迁移工具,在 Git Bash 中进行操作:
git clone git://repo.or.cz/fast-export.git
mkdir to_git
cd to_git
git init
../fast-export/hg-fast-export.sh -r /path/to/old/hg_repo_folder
git checkout HEAD
说明:
必须安装 hg 和 git,转换过程中需要用到。
环境变量的 Path 中要包含 Python 的目录。
必须执行 hg-fast-export.sh,不能直接执行 hg-fast-export.py,
直接执行 hg-fast-export.py 问题一大堆,也可能是我的 python 内力不足。
下面说说我遇到的一些问题(郁闷,怎么问题都让我遇上了)。
问题一
Error: Branch [master] modified outside hg-fast-export:
f8b24a1a35786cfcbb911592f4ad002ff76d4fae (repo) != None (cache)
解决:目标目录的git版本库不纯净,必须是空目录直接 git init 之后的。
问题二
repository has at least one unnamed head: hg r49
解决:加 --force 处理之
问题三 - 日志乱码
解决:修改hg-fast-export.py,对日志进行编码转换(170行左右)
(revnode,_,user,(time,timezone),files,desc,branch,_)=get_changeset(ui,repo,revision,authors)
desc = desc.decode('gbk').encode('utf-8')
branch=get_branchname(branch)
问题四 - 中文文件名乱码
解决:修改hg-fast-export.py,对文件名进行编码转换(134行左右)
开头加入:
reload(sys)
sys.setdefaultencoding('cp936')
找到:
wr('M %s inline %s' % (gitmode(manifest.flags(file)),file))
改为
wr('M %s inline %s' % (gitmode(manifest.flags(file)),file.encode('utf-8')))
分享一个我修改过的 hg-fast-export.py 文件:点击下载
hg(Mercurial)版本库迁移到git版本库的更多相关文章
-
Git版本库的创建(Ubuntu)
在Ubuntu上学习Git随笔. 一. git 仓库的安装 git 在终端用git命令查看Ubuntu是否安装git版本库,如果没有安装,最新版本(Ubuntu18.04)会提示用下面命令进行安装. ...
-
06.升级git版本及命令学习
博客为日常工作学习积累总结: 1.升级git版本: 参考博客:https://blog.csdn.net/yuexiahunone/article/details/78647565由于新的版本可以使用 ...
-
OpenJDK-study-001 windows上安装Mercurial 4.4.1 克隆OPENJDK版本库
下载安装 1.下载Mercurial 进入https://www.mercurial-scm.org/wiki/Mercurial下载,windows上傻瓜式安装的,安装好之后,命令行进入安装目录, ...
-
萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解
由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e ...
-
redmine整合GIT版本库
redmine整合GIT版本库 服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...
-
GIT版本库回滚【图文版】
git 版本库回滚,在实际开发过程中总会遇得到 1. 先找出需要回滚的commitid git log -3 2. 重置本地版本库到指定commitid, 注意:本地改动将丢失 ...
-
Git版本库
创建版本库:git init db 只要用git init db 就可以很容易创建一个空的Git版本库. Git版本库创建好之后,在版本库的目录下有一个.git的子目录中有几项内容,其中注意三项: 1 ...
-
git 版本库回滚(转载)
From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...
-
git教程--git版本库的使用
向版本控制器提交文件 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distribute ...
随机推荐
-
MindManger学习技巧
ctrl+shift+f 字体颜色
-
Java设计模式 - 代理模式
1.什么是代理模式: 为另一个对象提供一个替身或占位符以访问这个对象. 2.代理模式有什么好处: (1)延迟加载 当你需要从网络上面查看一张很大的图片时,你可以使用代理模式先查看它的缩略图看是否是自己 ...
-
Raspberry Pi 3 --- identify the version of linux kernal file
open it
-
Consolidated Seed Table Upgrade Patch(Patch 17204589)
$ adop phase=apply patches= hotpatch=yes abandon=no Enter the APPS password: Enter the SYSTEM passwo ...
-
【C语言】15-预处理指令1-宏定义
预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2 ...
-
javascript去除首尾空白字符
if ( twocode.replace(/^\s+|\s+$/g,"")=="" ) { alert("二维码不能为空"); docume ...
-
simplefactory简单工厂模式
简单工厂模式概述 又叫静态工厂方法模式,它定义一个具体的工厂类负责一些类的实例 优点 客户端不需要在负责对象的创建,从而明确了各个类的职责 缺点: 这个静态工厂类负责所有对象的创建, ...
-
C#-gdi绘图,双缓冲绘图,Paint事件的触发
一. 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1 绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面 ...
-
iOS 开发中遇到的问题
1. 关于纠结很久的KVO崩溃问题,其真正原因是,在删除roomItem的KVO之前,将这个对象已经赋值为nil,所以实际上并没有删除他的observer,因此而崩溃:长时间纠结的原因是受.cxx_d ...
-
JavaScript中String.prototype.replace() 方法的使用
摘抄于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace ...