6

我有一个具有 mercurial HG 代码源管理的项目,并尝试在 VSTS/Git 平台上迁移它。

我读到有一个工具可以做到这一点,“快速导出”......所以我尝试但没有实现在 Windows 中工作......

假设我D:\MyProject包含.hg目录和项目代码文件,我

  • 下载fast-export“D:\fast-export-master”文件夹中的文件,
  • 创建了一个新目录D:\MyProject-git
  • D:\MyProject-gitgit init命令中启动(然后出现一个新.git目录);
  • 现在和D:\MyProject-git我一样
    ..\fast-export-master\hg-fast-export.sh -r "D:\MyProject"

现在奇怪的事情开始发生了,一个命令行窗口出现并消失得如此之快我不明白发生了什么,所以我重新启动了上一个命令希望看到消息......我应该尝试数十次直到能够捕获printscreen 命令行消息,上面写着奇怪的东西:

其中:没有 D:\fast-export-master\hg-fast-export.sh 在 (/c/Users/xxx/bin:mingw64/bin:/user/local/bin:/usr/bin:/bin/mingw64 /bin:/usr/bin:/c/Users/xxx/bin:/c/ProgramData/Oracle/Java/javapath:/c/WINDOWS/system32 [...etc...etc...] )

我想知道是什么问题以及如何解决它......

编辑:

按照下面的@max630 建议,我重新安装了 Python 并更新了 PATH,因此它在命令中被识别

> python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

从开始菜单打开“GIT Bash”然后

cd "/D/MyProject-git"
../fast-export-master/hg-fast-export.sh -r "D:\MyProject" --force

这给了:

../fast-export-master/hg-fast-export.sh: line 175: python: command not found
C:\Program Files\Git\mingw64\libexec\git-core\git-fast-import.exe statistics:
---------------------------------------------------------------------
Objects allocated:       5000
...

在此处输入图像描述

4

6 回答 6

1

我认为您担心的是您将“hg-fast-export”导入到未添加到环境变量中的目录中,根据错误消息“D:\fast-export-master\hg-fast-export.sh " 未在您的环境变量列表中找到,因此请尝试在您的环境变量中添加以下“D:\fast-export-master\”,然后重试。

如果还没有成功,请查看这篇文章并逐步按照所说的进行操作:

https://www.appveyor.com/blog/2014/02/23/converting-mercurial-repository-to-git-on-windows/

作者已将目录“hg-fast-export”复制到新目录git中(没有“hg-fast-export”的.git),并在他的环境变量中添加了hg、git和python。

祝你好运

于 2018-03-13T12:27:13.917 回答
1

万一它对任何人有帮助,我花了一段时间才让 hg-fast-export 工作,但我最终到达了那里。以下是我遇到的一些问题:

  • 我需要安装 Python,还必须将 Python 二进制目录添加到系统 PATH。
  • 说明说从 git bash 窗口运行 hg-fast-export 。在我第一次尝试时,我什至无法 cd 到正确的目录,因为我的 bash shell 让我“入狱”到我的主目录层次结构中。我将 git bash 快捷方式更改为以管理员身份运行,删除了 --cd-to-home 参数,并将其设置为在 C: 中启动。请注意,一旦您启动 shell,路径将以 /c/ 开头。
  • 在发出命令git init创建一个空的仓库后,我还必须发出git config core.ignoreCase false才能进一步导出。
    • 接下来我收到错误“ImportError:没有名为 mercurial 的模块”。我已经完成了 TortoiseHg 的二进制安装,但它需要源。我下载了 Mercurial 源并将根源目录添加到系统环境变量 PYTHONPATH 中。然后我重新启动了 git bash。
    • 现在 git-fast-export 工作了!
    • 如文档所述,git status会将所有文件显示为“已删除”。发出命令git checkout HEAD,重复git status,它应该显示“没有提交,工作树干净”。
于 2019-10-30T00:42:59.590 回答
1

我花了几个小时尝试上述许多解决方案,但对我来说没有任何效果。我尝试了许多变体中的 fast-export 和 tortoisehg 中的 hggit。

最后,我使用GitHub Importer将我所有的 mercurial 存储库导入 GitHub。

我只需要提供存储库的 URL(我的在 BitBucket 中),这是一个非常顺利和简单的过程。比尝试让 python 在 git bash、路径变量等中工作要顺畅得多!

我还有一些重要的本地更改,我无法推送到 bitbucket,因为它们不允许推送。所以我不得不手动将这些文件复制到 git 存储库中。

当从 VCS 根从 bitbucket 切换到 github 时,我也无法让 teamcity 检测到更改。所以我在团队城市创建了一个新项目。

我希望这可以帮助任何面临这些挑战的人。

于 2020-08-07T19:39:11.033 回答
0

与 git 捆绑的 bash 中似乎有一个错误。如果从 cmd 直接运行 .sh 文件开始,它不会正确初始化“$@”。

从开始菜单打开“GIT Bash”,然后发出命令:

cd "/D/MyProject-git"

导航到D:\MyProject-git, 和

../fast-export-master/hg-fast-export.sh -r "D:\MyProject"

运行你的脚本

于 2018-03-12T14:39:21.657 回答
0

由于您已经安装了 TortoiseHg,因此有一种更简单的方法可以将 hg 迁移到 git。

首先,在 TortoiseHg 中启用 hggit:

TortoiseHg -> 全局设置 -> 扩展选项卡 -> 选择 hggit -> 确定。

在此处输入图像描述

然后使用以下命令迁移并推送到 VSTS git repo:

# In an empty folder
mkdir git
cd git
git init
cd ..
hg clone <URL for Hg repo>
cd hgrepo
hg bookmarks ../git
cd ..
cd git
git checkout hg
git remote add origin <VSTS git repo URL>
git push origin --all
于 2018-03-13T09:19:38.927 回答
0

按照下面的@max630 建议,我重新安装了 Python 并更新了 PATH

从 Git 2.24(2019 年第四季度)开始,您必须安装 Python 3,因为hg-to-git脚本 (in contrib/) 已更新为可与 Python 3 一起使用。

请参阅Hervé Beraud ( ) 的提交 d17ae00(2019 年 9 月 18 日(由Junio C Hamano 合并 -- --8f53fe1 提交中,2019 年 10 月 7 日)4383
gitster

hg-to-git:使其与python3和python2兼容

Python 2 于 2019 年底 EOL,许多发行版和系统现在都将 python 3 作为其默认版本。

重写hg-to-gitPython 3 不再支持的功能,这样更新的代码仍然可以在 Python 2 中使用:

  • print不是陈述;改用print()函数。
  • dict.has_key(key)没有了;改用“ key in dict”。
于 2019-10-12T20:05:42.920 回答