如何将Mercurial存储库转换为Git(支持LFS)?
我有一个Mercurial repo,其中包含300多个提交,还包含一些相对较大(比如10+MiB)的文件。我想将其转换为Git存储库,保留所有分支和合并,并使用LFS扩展来管理大文件。到目前为止,我的流程如下:如何将Mercurial存储库转换为Git(支持LFS)?,git,mercurial,git-lfs,Git,Mercurial,Git Lfs,我有一个Mercurial repo,其中包含300多个提交,还包含一些相对较大(比如10+MiB)的文件。我想将其转换为Git存储库,保留所有分支和合并,并使用LFS扩展来管理大文件。到目前为止,我的流程如下: 使用Hg Clone 使用git init cd转换成git repo,然后使用hg fast export-r-A进行转换。在这一点上,我有一个工作回购,但所有的大文件仍然是索引的一部分。我想在插入.gitignore和.gitattributes文件之前插入一个新的提交 创建一个没
Hg Clone
git init
cd
转换成git repo,然后使用hg fast export-r-A
进行转换。在这一点上,我有一个工作回购,但所有的大文件仍然是索引的一部分。我想在插入.gitignore
和.gitattributes
文件之前插入一个新的提交git checkout——孤立的新根和&git rm-rf。
git add*&&git commit-m“签入git元文件”
git checkout master&&git rebase--root--to new root--preserve merges
error: Your local changes to the following files would be overwritten by merge:
assets/ui/sayscreen/blackarrow.png
assets/ui/sayscreen/blackcircle.png
assets/ui/sayscreen/thoughtbox.png
assets/ui/sayscreen/translationbox.png
assets/ui/sayscreen/whitearrow.png
assets/ui/sayscreen/whitecircle.png
Please commit your changes or stash them before you merge.
Aborting
fatal: cherry-pick failed
Could not pick 01908b624e50709de07685ef8ab158feef02e9e0
真正让我困惑的是,在最初的Hg存储库中,此时没有合并;第一次合并提交是在15。此外,运行git status
会列出50-60个修改过的文件,即使这个特定的提交最初只涉及8个文件。最后,使用gitls files-u
尝试查看哪些文件是冲突的,不会返回任何结果
由于git status列出的大多数文件都是PNG图像,我的第一个想法是LFS不知何故挡住了我的去路,并试图在重基过程中拉出大的斑点。但是,在开始整个过程之前,我在全局上下文中运行了git lfs uninstall
,目的是在我对rebase操作感到满意之后执行git lfs migrate import--fixup
是什么导致了这些合并冲突,我如何才能绕过它来完成迁移?我最近刚从一个扩展了大文件的mercurial repo转换成git。这里有几点
$hg克隆
$hg-v lfpull--rev“all()”
$cd。。
$hg lfconvert--转换为正常值
... // 核实回购协议
$hg快速出口-r-A
我不确定这是否是问题的根源,但一般来说,保留合并(或更好/更奇特的新表亲rebase merges)实际上无法保留合并。它必须重新执行它们。整个方法充满了潜在的故障点。最好不要尝试重新设定基准。我在git-lfs-migrate
方面没有任何经验,我不知道您打算对这些属性文件做什么,但是您可以在导入之后,在迁移之前,使用git-filter分支
而不是重定基来填充它们。如果可能的话,不用麻烦了!我不是一个喜欢git的人,但这里有一个HG方法——您可以先在HG端插入.gitignore和.gittattributes文件,然后将它们从HG导出到git。实现这一点的方法不止一种,但对于完全控制,您可以使用HgConvert和--spiteMap选项。
$hg clone <hg-repo>
$hg -v lfpull --rev "all()"
$cd ..
$hg lfconvert --to-normal <hg-repo> <hg-repo-nolf>
... // verify the repo
$hg-fast-export -r <hg-repo> -A <authors>