使用 Mercurial 拉取 git 存储库失败并出现错误"path contains illegal component .hg/00changelog.i"



我有一个使用git版本的项目,我们的客户希望使用Mercurial访问它,所以我们的想法是使用插件"hg-git"转换项目。

当使用hg命令按照以下步骤克隆"转换"的存储库时,会引发错误:

  • 在Bitbucket上创建git存储库
  • 使用git命令本地克隆,添加android项目,提交,推送。工作良好
  • 在本地文件夹上运行hggit"convert"命令
  • 我添加、提交、推送到Bitbucket

插件自动更改了项目结构,在我的文件夹中生成了一个包含.hg文件的新文件夹,如下所示:

|-My_awesome_android_app
|–.git
|– My_awesome_android_app_hg
|-.hg
|– android_app_files_in_this_folder

当我尝试使用Mercurial命令从Bitbucket导入"转换"的git项目时,它被中止:

hg clone git@bitbucket.org:xxxxx/My_awesome_android_app.git
destination directory: My_awesome_android_app-git
importing git objects into hg
updating to branch default
abort: path 'fluffy-bitbucket-git-hg/.hg/00changelog.i' is inside nested repo 'fluffy-bitbucket-git-hg'

为了解决"嵌套"问题,我在一些SO文章中读到,.hg文件夹必须与.git文件夹处于同一级别。结构更改为:

|-My_awesome_android_app
|–.git
|–.hg
|– android_app_files_in_this_folder

我提交了更改,推送到Git repo,然后再次尝试hgpull:

hg clone git@bitbucket.org:xxxxx/My_awesome_android_app.git
destination directory: My_awesome_android_app-git
importing git objects into hg
updating to branch default
abort: path contains illegal component: .hg/00changelog.i

我已经找了将近2天的时间来解决第二个错误,从brew重新安装了所有东西,它失败了,然后macport再次检查了python和mercurial,试图创建一个新的比特桶回购并从头开始,查看了GG和SO其他相关帖子,修改了.hgrc文件,我仍然收到错误。

我尝试了另一种选择:Greg Malcolm的"镜像git和mercurial以懒惰的方式转发"(同一个本地项目镜像/同步一侧的git存储库和另一侧的mercurial)。

这是我测试期间唯一有效的解决方案。但这并不是我想要做的,因为你有两个不同的回购要同步,我只想有一个带有.git和.hg的。

我希望有人能帮助我使用一个同时接受.Git push和hg pull的Git repo来解决解决方案的错误消息,或者告诉我两个不同repo(一个Git,一个hg)的"镜像"是否是唯一可行的选择。

Thx!

配置/安装:Mac Os Sierra按照SO回答中的说明安装其余部分-macports-python 2.7-Mercurial-hggit

.hgrc文件的内容:

[ui]
username = xxxx xxxxxx <pxxxxx.xxxxxx@xxxx.xxx> (in reality it is my mail adress)
ssh = ssh -C
[extensions]
hgext.convert= 
hgext.bookmarks =
hggit =
[git]
intree = True

"convert"命令不是hg-git的一部分,而是一个独立的扩展,并且不会创建与原始git存储库兼容的存储库。

为了透明地将Mercurial用于带有hg git的远程托管git存储库,只需直接从git URL克隆存储库即可,例如:

hg clone git@bitbucket.org:user/repo

然后,您应该能够使用正常的Mercurial命令直接从该存储库中提取和推送到该存储库。

相关内容

  • 没有找到相关文章

最新更新