作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
GIT对多分支有着非常好的支持,团队的项目逐渐从HG迁移至GIT。迁移后,如何能保留原来HG项目中的提交历史和tag,是一个必须要解决的问题,fast-export
正是因此而产生。
一、预备
- 需要迁移的HG项目本地路径:/devdata/projects/game/threadpool-jws-merge
- 迁移的目的GIT仓库:git@git.aofeng.local:jws-module/threadpool.git
二、迁移过程
1、获取fast-export工具。12cd $OPEN_SOURCE_DIRgit clone git://repo.or.cz/fast-export.git
说明:
$OPEN_SOURCE_DIR
为存放开源项目的目录 ,如:/devdata/projects/open_source/
2、新建GIT本地仓库并初始化。12345cd $GIT_REPO_ROOTmkdir threadpool-jwscd threadpool-jwsgit init
说明:
$GIT_REPO_ROOT
为存放GIT项目的目录 ,如:/devdata/projects/git/
3、使用fast-export将HG项目转换成GIT项目。1$OPEN_SOURCE_DIR/fast-export/hg-fast-export.sh -r <HG项目本地仓库路径>
说明:
- 执行上述转换命令后,在$GIT_REPO_ROOT/threadpool-jws下面生成了一个.git目录,存放的是从HG项目转换后的GIT版本信息,原来的HG项目不受影响。
- 当前例子中
<HG项目本地仓库路径>
为/devdata/projects/game/threadpool-jws-merge。
4、将本地GIT仓库与远程GIT仓库建立关联并推送代码。123git checkout HEADgit remote add origin <迁移的目的GIT仓库>git push origin master
说明;
- 当前例子中
<迁移的目的GIT仓库>
为 git@git.aofeng.local:jws-module/threadpool.git
5、将标签(tag)推送至远程GIT仓库。1git push origin --tags