如何在远程存储库上运行 hg recover 命令

Posted

技术标签:

【中文标题】如何在远程存储库上运行 hg recover 命令【英文标题】:how to run hg recover command on a remote repository 【发布时间】:2013-03-06 17:21:38 【问题描述】:

在 teamcity 中运行构建时出现以下错误。

Failed to collect changes, error: '"C:\Program Files\TortoiseHg\hg.exe" --config ui.interactive=False pull https://test:******@hg.myrepo.co.uk/terriff' command failed.
stdout: pulling from https://test:***@hg.myrepo.co.uk/terriff
searching for changes

stderr: abort: abandoned transaction found - run hg recover!

我已经尝试删除代理机器上的构建目录,但仍然遇到同样的错误。还尝试运行 hg recover 命令,但它说存储库不是本地的。请指导如何解决此错误。

【问题讨论】:

【参考方案1】:

我有同样的问题,因为我的 hg 文件夹从存储库文件夹中丢失了。我设法修复它在存储库的 cached 版本上运行 hg recover。您可以在以下目录中找到缓存的存储库:

..\ProgramData\JetBrains\TeamCity\system\caches\mercurial

您应该会在该文件夹中看到一些名称为 hg_7282240431393414416 的文件夹和一个文件 map(没有扩展名)。存在从存储库到存储在此文件中的文件夹的映射。该文件包含几行,例如:

https://bitbucket.org/teamname1/repo1/ = hg_7282240431393414416
https://bitbucket.org/teamname1/repo2/ = hg_7282240431393414417
https://bitbucket.org/teamname2/repo3/ = hg_7282240431393414418

您必须在此map 文件中找到与您的存储库相对应的文件夹(在等式符号之后),并在该相应文件夹中运行hg recover。运行此命令可能需要一些时间。

请注意:团队名称、存储库和文件夹名称仅用于演示。

希望对你有帮助!

【讨论】:

..\ProgramData\JetBrains\TeamCity\system\caches\mercurial 是默认位置,在我们的例子中,我们在其他地方设置了缓存位置,这让我们有点困惑。【参考方案2】:

我遇到了同样的问题,我通过删除 TEAMCITY 的缓存/mercurial 目录解决了这个问题。这可能不是最好的做法,但它现在正在发挥作用。 HG 的问题来自 team citycache 的一个子文件夹...

我花了大约 5 个小时来理解它!该死!

【讨论】:

我也明白了,为 TeamCity 发布了一个错误:youtrack.jetbrains.com/issue/TW-43492【参考方案3】:

好的,我今天遇到了同样的问题,这就是我解决它的方法!

    如果您在 Windows 中运行它,请打开命令提示符。

    类型,

    hg recover -R "remote-path-of-your-repository"

    命令完成可能需要一段时间。

【讨论】:

对我来说,这导致:“中止:存储库 '【参考方案4】:

是的,该命令必须在远程主机上运行(例如,通过 shell)。

【讨论】:

以上是关于如何在远程存储库上运行 hg recover 命令的主要内容,如果未能解决你的问题,请参考以下文章

删除不再在远程存储库上的本地 git 标签

在远程存储库上提交历史记录

如何在GIT Rebase Interactive Squash之后删除远程存储库上的历史记录提交消息

在推送之前丢弃 Mercurial 中的本地分支

通过hstart运行到文件的hg命令的STDOUT?

sh 删除本地和远程存储库上的所有标记(小心)