[英]After converting repository from hg to git, how to migrate additional changesets?
使用快速导出将Mercurial存储库迁移到git之后,我发现未合并为默认值的打开的命名分支没有被转换。 现在,我想将这些分支上的未完成变更集导入到新的git repos中。
我尝试了包括hg-git和hg export在内的各种方法,但是这些方法的问题是我要迁移的变更集或diff具有不同的变更集id,并且由于找不到历史记录,导致进程出错。
我正在考虑编写脚本以自动从Mercurial导出变更集,在新的git repo中找到相应的父变更集,导入git阶段,然后提交,但是我想知道是否有类似这样的工具-导入差异没有匹配的历史记录-已经存在。 那里有东西吗?
您可以通过以下步骤将hg转换为git:
mkdir git cd git git init cd ..
hg clone <URL for hg repo> hg bookmarks hg hg push ../git
cd .. cd git git checkout hg git log
然后,您将找到日志历史记录。
更新
如果仍要使用faste-export进行迁移。 您可以尝试以下步骤:
受到从mercurial迁移到git的启发,我们还可以通过hg log | grep changeset: | sort | uniq | sed 's/changeset: *//' > ../changeset
创建一个变更集映射文件hg log | grep changeset: | sort | uniq | sed 's/changeset: *//' > ../changeset
hg log | grep changeset: | sort | uniq | sed 's/changeset: *//' > ../changeset
hg log | grep changeset: | sort | uniq | sed 's/changeset: *//' > ../changeset
。
当将hg迁移到git时,只需尝试/path/for/fast-export/hg-fast-export.sh -r /path/for/hg-repo -A /path/for/changeset
(因为Windows操作系统似乎很难usehg-fast-export.sh,非常抱歉,在更新答案之前无法尝试)。
最后,导入所需的内容比任何转换工具所支持的都要复杂。 我编写了一个C#脚本,该脚本将从Mercurial存储库导出补丁,根据需要对其进行修改以匹配新的Git存储库布局,然后生成一系列git命令,这些命令在运行时将导入补丁并在要导入的分支上进行提交。 这在我们需要导入的许多分支上都运行良好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.