我正在尝试将mercurial存储库迁移到git,但问题是mercurial存储库有子存储库(一些有分支),还有很多合并和分支本身。我希望最终的git存储库能够保留所有这些历史记录,并且在检出存储库或其他分支的早期部分时是正确和完整的。我不需要新的存储库有子模块或子树,虽然我也会接受使用它的解决方案。我看到的一些方法将新repo顶部的所有子站点合并为分支,这意味着过去的签出不包含子目录中的所有文件。我也尝试将所有内容导入为分支,将头重置为过去,合并和重新定位,但是有太多的合并并且出现了许多冲突,即使使用--preserve-merges,所以我宁愿避免这种情况。我也找不到任何方法在git中复制mercurial子库更新历史作为子模块更新历史记录。有没有人有任何想法?谢谢。
答案 0 :(得分:1)
也许你可以做的一件事(但我不确定这是否可行),是使用hg-git推送到空的git存储库。
或者,您也可以扩展git-cinnabar以支持subrepo转换为子模块。
答案 1 :(得分:1)
遇到类似问题(将具有子存储库的Mercurial项目移动到具有统一布局的Git)我打算采用双重方法:
我正准备自己测试一下,并根据结果更新这个答案......
答案 2 :(得分:0)
免责声明:仅当您愿意将子存储库折叠到主存储库中时,以下解决方案才有效。
简而言之:将每个子仓库转换为git,将主仓库转换为git,然后让git合并仓库。
设置fast-export。它需要Python 2.7和Mercurial 4.6。
对于每个子仓库:
elastic-beanstalk
yaml
重新填充目录'About button.
Private Sub ButtonAbout_Click(sender As Object, e As RoutedEventArgs) Handles ButtonAbout.Click
WindowAbout.ShowDialog()
End Sub
'Close button to close the main window.
Private Sub ButtonClose_Click(sender As Object, e As RoutedEventArgs) Handles ButtonClose.Click
Close()
End Sub
1 例如,在我的情况下,初始文件夹结构如下:
git init; git config core.ignoreCase false;
转换后,新的仓库配置为:
git reset --hard HEAD
因此我们需要在子存储库中添加一个文件夹级别,以使它们类似于:
git remote add subrepo1 path/to/subrepo1
git fetch subrepo1 --tags
git merge subrepo1/master --allow-unrelated-histories
git remote remove subrepo1