如何处理Ruby中的错误Git/Hg克隆命令



是否有一种方法可以处理不优雅地存在的仓库?在Ruby,我可以克隆这样的回购:

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

如果可以找到存储库,则可以正常工作。如果无法,此错误消息会弹出:

abort: HTTP Error 404: Not Found

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

基本上,我只想能够检查试图克隆的存储库是否存在而无需退出脚本。

感谢您的帮助。

您可以使用Open3#Capture3,该#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')

最新更新