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

时间:2019-05-23 01:16:01

标签: ruby error-handling version-control mercurial

是否有一种方法可以尝试克隆不正常存在的存储库?在ruby中,我可以克隆这样的仓库:

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

如果可以找到存储库,则可以正常运行。如果不能,则会弹出此错误消息:

abort: HTTP Error 404: Not Found

有没有一种方法可以处理这些消息并在脚本中继续而不是退出?我已经尝试检查错误代码并引发异常,但是它仍然不想继续进行其他操作。

基本上,我只想能够在不退出脚本的情况下检查尝试克隆的回购是否存在。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用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')