簡體   English   中英

用Mercurial拉動git repo失敗,並出現錯誤“路徑包含非法組件.hg / 00changelog.i”

[英]pulling git repo with mercurial fails with error “path contains illegal component .hg/00changelog.i”

我有一個版本為git的項目,我們的客戶希望使用Mercurial訪問它,因此我們的想法是使用插件“ hg-git”轉換該項目。

按照以下步驟使用hg命令克隆“已轉換”存儲庫時,將引發錯誤:

  • 在Bitbucket上創建一個git存儲庫
  • 使用git命令在本地克隆,添加了一個android項目,然后提交,推送。 工作正常。
  • 在本地文件夾上運行hg-git“ 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倉庫,然后再次嘗試hg pull:

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,試圖創建一個新的bitbucket存儲庫,並從頭開始,查看了GG和SO的其他相關信息帖子,修改了.hgrc文件,我仍然收到錯誤。

我嘗試了另一個選擇:格雷格·馬爾科姆(Greg Malcolm)編寫的“以懶惰的方式鏡像git和mercurial倉庫”(同一本地項目鏡像/在一側同步git存儲庫,在另一側同步Mercurial)。

那是我測試期間唯一可行的解​​決方案。 但這並不是我想要做的,因為您有兩個不同的存儲庫要同步,而我只希望其中一個帶有.git和.hg的存儲庫。

我希望有人可以幫助我使用單個接受.git push和hg pull的Git存儲庫解決該解決方案的錯誤消息,或者告訴我2個不同存儲庫(一個git,一個hg)的“鏡像”是否是唯一的工作選擇。

謝謝!

配置/安裝: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命令直接從該存儲庫中拉出並推送到該存儲庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM