这是我在ruby中检测git的方法:
`which git 2>/dev/null` and $?.success?
然而,这不是跨平台的。它在非unix系统或没有which
命令的系统上失败(虽然我不确定它们是什么)。
我需要一种方法来检测满足这些条件的git:
更新:解决方案是避免完全使用which
并在Windows上将输出重定向到NUL
。
require 'rbconfig'
void = RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
system "git --version >>#{void} 2>&1"
system
命令在成功时返回true,在失败时返回false,从而节省了使用反引号时所需的$?.success?
行程。
答案 0 :(得分:4)
Windows上没有/dev/null
这样的东西。
我们在不同项目中采用的一种方法是根据NULL
定义RbConfig::CONFIG['host_os']
NULL = RbConfig::CONFIG['host_os'] =~ /mingw|mswin/ ? 'NUL' : '/dev/null'
然后使用它将STDOUT和STDERR重定向到它。
至于哪一项,我在my blog
上做了一个简单的参考但是,如果您只想检查git存在而不是位置,则无需执行此操作,通过简单的系统调用并检查结果$?
就足够了。
希望这有帮助
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
我想,你需要这样做:
which