我已经通过快速导出尝试了hg2git,我已经尝试过hg-git.
两者都没有成功.hg2git实际上工作,但我不得不问一个运行Unix机器的朋友.这搞砸了整个文件中的所有换行符.
hg-git只是因为一些libzip压缩错误而失败了.
有人在Windows上将hg repo转换为git有什么成功吗?
要清楚,我不关心互操作.我想把整个回购从hg移植到git,带走历史.我不需要来回推送更改 - 只需转换一次.
提前致谢!
Mau*_*ord 56
在我的Mac上执行以下操作以成功将Mercurial仓库导出到Git(带有完整分支):
mkdir myrepo; cd myrepo;
git clone git://repo.or.cz/fast-export.git .
rm -rf .git .gitignore
git init
./hg-fast-export.sh -r ../path/to/local/hg/repo
git clean -f # remove fast-export files
Run Code Online (Sandbox Code Playgroud)
Tre*_*ann 13
如何将Mercurial仓库转换为Git仓库.
这是我曾经想过的最愚蠢的事件序列之一,但我根本不是一个Python人.
(如果您安装了所有内容,您应该看到它下载并编译Mercurial模块)
以下是如何将Mercurial repo的本地克隆导出到GitHub的简单示例.
首先,如果您还没有将hggit
扩展名添加到~/.hgrc
文件中:
[extensions]
hggit =
Run Code Online (Sandbox Code Playgroud)
然后从Mercurial存储库的根目录运行以下命令:
hg bookmark -r default master
hg push -f git+ssh://git@github.com/bolinfest/plovr.git
Run Code Online (Sandbox Code Playgroud)
就个人而言,我必须-f
在运行时指定hg push
,但我怀疑是因为我的Mercurial仓库中有一些复杂的分支.您可能认为没有必要进行迁移.
确保您拥有git+ssh:
GitHub存储库的git:
URI 而不是URI.(git+ssh:
在新的GitHub UI中,URI有点难以找到.)
根据您的仓库的大小,运行hg push
可能需要一段时间,所以要耐心等待.完成后,您应该能够在GitHub上看到您的项目.在这个例子中,我的项目可以在https://github.com/bolinfest/plovr上找到.
正如您所料,现在任何人都可以克隆您的公共GitHub仓库,如下所示:
git clone git@github.com:bolinfest/plovr.git
Run Code Online (Sandbox Code Playgroud)
以下是在Windows上进行迁移的所有部分.
先决条件
在安装过程中,允许绑定到.sh文件.
确保PATH环境变量中的所有工具都可用.
移民
mkdir c:\git_work
cd c:\git_work
git clone http://repo.or.cz/r/fast-export.git
现在你需要用于python的mercurial libs.要么从这里 获取它们,要么执行以下步骤.
编辑c:\ git_work\fast-export\hg-fast-export.py:
import sys # move this line up here
# Add a new line that imports [mercurial libraries][2] from this zip:
sys.path.append(r'C:\Program Files\TortoiseHg\library.zip')
# ...above the old line:
from mercurial import node
Run Code Online (Sandbox Code Playgroud)mkdir MyNewGitRepo
hg-fast-import.sh -r c:\Path\To\MyOldHgRepo
删除迁移脚本:
git clean -n # see what would happen
git clean -f # delete migration files
Run Code Online (Sandbox Code Playgroud)通过重置索引和工作树来还原丢失的文件.
git reset --hard
Run Code Online (Sandbox Code Playgroud)如果你碰巧使用GitHub ,你的Mercurial仓库可以通过HTTP/HTTPS获得......
在使用快速导入(一个很好的工具,没有问题转换我的仓库)和将我的新git仓库从我的开发箱推送到GitHub的过程中,我注意到在"快速设置"期间选择"从另一个存储库导入代码" "我在GitHub上的git repo的一部分.
我测试了它并获得了与使用快速导入相同的结果.在我的情况下,使用GitHub导入选项比快速导入更简单(再次,没有任何反对该工具,不,我不适用于GitHub).对我有用的步骤是:
归档时间: |
|
查看次数: |
18468 次 |
最近记录: |