首页 > 解决方案 > 如何在 ruby​​ 中处理不正确的 git/hg clone 命令

问题描述

有没有办法处理试图克隆一个不正常存在的仓库?在 ruby​​ 中,我可以像这样克隆一个 repo:

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

如果可以找到 repo,那么它工作正常。如果不能,则弹出此错误消息:

abort: HTTP Error 404: Not Found

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

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

谢谢您的帮助。

标签: rubyerror-handlingversion-controlmercurial

解决方案


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

推荐阅读