如何在 ruby 中处理不正确的 git/hg 克隆命令

How to handle incorrect git/hg clone command in ruby

有没有办法优雅地处理克隆不存在的存储库的尝试?在 ruby 中,我可以像这样克隆一个 repo:

system("hg clone https://username@bitbucket.org/username/repoThatDoesNotExist")

如果可以找到 repo,那么它就可以正常工作。如果不能,会弹出这个错误信息:

abort: HTTP Error 404: Not Found

有没有办法处理这些消息并在脚本中继续而不是退出?我已尝试检查错误代码并引发异常,但它仍然不想继续处理其余部分。

基本上,我只是想在不退出脚本的情况下检查是否存在试图克隆的存储库。

感谢您的帮助。

您可以使用 Open3#capture3 为您提供命令的状态,调用 success? 然后您可以检查它是否抛出错误或成功。

require 'open3'

ERROR_MESSAGE = 'abort: HTTP Error 404: Not Found'.freeze

def clone_repo(repo)
  _, _, status = Open3.capture3("hg clone #{repo}")

  return ERROR_MESSAGE unless status.success?
end

p clone_repo('https://username@bitbucket.org/username/repoThatDoesNotExist')