“abort: No module named selectors!” when Pushing Mercurial repository to Git repository

六月ゝ 毕业季﹏ 提交于 2019-12-12 13:15:18

问题


I am trying to convert Hg repository to Git repository. Both are private repository.

I have followed these steps (reference):

  • Step 1: Set up your repositories

  • Step 2: Install the Mercurial hggit plugin

  • Step 3: Push your code into your Git repository

  • Step 4: Switch your local repository to use Git

I have installed the prerequisites also viz. hg-git plugin and updated the .hgrc file of the repository that needs to convert.

Error coming while pushing the repository( hg push [Git repo path] ) is "abort: No module named selectors!"

I have used --traceback option, please find the log below:

E:\BK_Hg\testHg>hg push --traceback https://CJbipin@bitbucket.org/CJbipin/testgit2.git
pushing to https://CJbipin@bitbucket.org/CJbipin/testgit2.git
Traceback (most recent call last):
File "mercurial\scmutil.pyo", line 161, in callcatch
File "mercurial\dispatch.pyo", line 344, in _runcatchfunc
File "mercurial\dispatch.pyo", line 984, in _dispatch
File "mercurial\dispatch.pyo", line 730, in runcommand
File "mercurial\dispatch.pyo", line 992, in _runcommand
File "mercurial\dispatch.pyo", line 981, in <lambda>
File "mercurial\util.pyo", line 1528, in check
File "mercurial\commands.pyo", line 4369, in push
File "E:/hg-git\hggit\util.py", line 60, in inner
File "E:/hg-git\hggit\__init__.py", line 414, in exchangepush
File "E:/hg-git\hggit\git_handler.py", line 405, in push
File "E:/hg-git\hggit\git_handler.py", line 1063, in upload_pack
File "E:/hg-git\hggit\git_handler.py", line 1749, in get_transport_and_path
File "dulwich\client.pyo", line 1330, in __init__
File "dulwich\client.pyo", line 1304, in default_urllib3_manager
File "hgdemandimport\demandimportpy2.pyo", line 167, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\__init__.pyo", line 8, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\connectionpool.pyo", line 29, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\connection.pyo", line 39, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\util\__init__.pyo", line 3, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\util\connection.pyo", line 3, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
File "urllib3\util\wait.pyo", line 1, in <module>
File "hgdemandimport\demandimportpy2.pyo", line 243, in _demandimport
File "hgdemandimport\demandimportpy2.pyo", line 41, in _hgextimport
ImportError: No module named selectors
abort: No module named selectors!

regards Bipin Kumar


回答1:


Because even in released THG 5.0.2 bundled hg-git sill have the same problem:

THG 5 solutions in details, step-by-step

Lazy fast way

  • Download patched full lib for THG 4.9.1 from comment in BB's issue
  • Replace dulwich + urllib3 in your THG's library archive by patched version from the above library
  • If after it clone attempt of git-repo raised "urllib3.exceptions.MaxRetryError" error then remove certifi or use certifi from patch

Longer more pure way

  • unpack library.zip
  • replace urllib3 with 1.24.1 (download, compile, replace old *.pyo)
  • replace dulwich with same content from https://github.com/dulwich/dulwich/, latest 0.19.11, (download, compile, replace old *.pyo)
  • We have don't replace hg-git, because bundled hggit contains latest compatibility fixes for Mercurial 5 (while dmitriyse's version don't have yet)
  • remove certify
  • re-pack library


来源:https://stackoverflow.com/questions/56405634/abort-no-module-named-selectors-when-pushing-mercurial-repository-to-git-rep

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!