ruby - 如何在 ruby 中处理不正确的 git/hg clone 命令
问题描述
有没有办法处理试图克隆一个不正常存在的仓库?在 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')