2

我想从 Google Code 和 Mercurial 迁移到 Git 和 GitHub,同时保留所有分支和版本历史。

到目前为止,Hg-Git mercurial 插件( http://hg-git.github.com/ )似乎是我唯一的选择。我尝试按照安装说明进行操作,但有点过头了。这就是我所在的位置:

[extensions]
hgext.bookmarks =
hggit = 

现在当我运行时:

C:\Python27\Scripts>easy_install.exe hg-git

我得到以下信息:

Searching for hg-git
Best match: hg-git 0.3.3
Processing hg_git-0.3.3-py2.7.egg
hg-git 0.3.3 is already the active version in easy-install.pth

Using c:\python27\lib\site-packages\hg_git-0.3.3-py2.7.egg
Processing dependencies for hg-git
Searching for dulwich>=0.8.0
Reading http://pypi.python.org/simple/dulwich/
Reading http://samba.org/~jelmer/dulwich
Reading http://launchpad.net/dulwich
Best match: dulwich 0.8.5
Downloading http://samba.org/~jelmer/dulwich/dulwich-0.8.5.tar.gz
Processing dulwich-0.8.5.tar.gz
Running dulwich-0.8.5\setup.py -q bdist_egg --dist-dir c:\users\lee\appdata\local\temp\easy_install-3qgeev\dulwich-0.8.5\egg-dist-tmp-ciyt_4

然后是一堆看起来像这样的错误:

Traceback (most recent call last):
  File "C:\Python27\Scripts\easy_install-script.py", line 8, in <module>
    load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')()
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1712, in main
    with_ei_usage(lambda:
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1700, in with_ei_usage
    return f()
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1716, in <lambda>
    distclass=DistributionWithoutHelpCommands, **kw
  File "C:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 211, in run
    self.easy_install(spec, not self.no_deps)
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 446, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 481, in install_item
    self.process_distribution(spec, dists[0], deps, "Using")
  File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 519, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 563, in resolve
    dist = best[req.key] = env.best_match(req, self, installer)
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 799, in best_match
    return self.obtain(req, installer) # try and download/install

不知道接下来要尝试什么。我还尝试了使用 hggit 克隆 github repo 中的提示,但我遗漏了一些明显的东西。任何帮助将不胜感激。

4

2 回答 2

2

只是草稿和一些笔记和想法:

  • 为了使用 TortoiseHG(在 Windows 上,如果重要的话,XP SP3)Python 不是强制性的 - 我在没有 Python/setuptools/pip 的情况下使用 THG
  • Bitbucket 的TortoiseHG(32 位64 位)在 Windows 世界中是自给自足的 Mercurial
  • 我手动将 hg-git 扩展添加到我的 TortoiseHG

\TortoiseHg\plugins>目录 /B

hg-git

...

  • 将 hg-git 扩展添加到全局 mercurial.ini (Documents and Settings\Badger\mercurial.ini)

[扩展]

...

hggit = c:\Program Files_Tools\TortoiseHg\plugins\hg-git\hggit

...

  • 书签扩展,作为默认扩展,与 THG 捆绑在一起,在一些版本之前在 GUI 中启用,现在可以在 mercurial.ini 中找到,因为bookmarks =在 Settings-Extensions 中没有相应的复选框

  • 使用 TortoiseHG 中的功能 hg-git(克隆、拉取、推送某些 Git-repo时没有错误),您可以尝试将外部 Mercurial 存储库转换为外部 Git 存储库

    • 将 CG Mercurial 仓库克隆到本地(Mercurial)仓库
    • 在 Github 上创建新的空 Git 存储库(验证身份验证和其他可能的问题)
    • 添加第二个远程仓库(GUI - “同步”选项卡,手动 - 在[paths]仓库的 .hg\hgrc 部分中的新字符串),对我来说只有git+ssh://git@github.com/username/reponame.gitURL(通过 PageAnt 进行基于密钥的身份验证)是透明的解决方案
    • 将本地 repo 推送到 github
    • 玩得开心

屏幕截图只是我在 GitHub 上的活动 Git 存储库的示例,并尝试通过实时资源来说明我的话

Fiver 回购

于 2012-09-24T01:49:29.103 回答
1

我也与 hg-git 作斗争。我想出了一个奇怪的解决方案。

我用https://import.github.com/new导入了 hg repo 这并不奇怪,一定是你要找的。


奇怪和奖励部分如下:

  • 我在http://bitbucket.org创建了一个 hg 镜像仓库
  • 我在 git 存储库中创建了一个本地 hg 存储库。
  • 我添加.hg/到我的.gitignore
  • 添加.hg/.git/到您的.gitignore文件 .git/ .hg/
  • 在本地 repo 中输入.hg目录并符号链接您的.gitignore文件,.hgignore

    $ ln -s ../.gitignore .hgignore

  • 现在对您所做的任何更改.gitignore也会被考虑hg

    $ git add .gitignore -am 'gitignore'

    $ hg add .gitignore -am '不要忘记将 .gitignore 符号链接为 .hg/ 文件夹中的 .hgignore'

    $ hg 推送默认值

    $ git push 起源大师

结论:虽然它看起来效率低下,但它在不丢失 hg repo 和数据库的同时利用了 github 的优势,并提供了同时使用githg

于 2014-12-11T12:47:27.447 回答