Независимый от платформы способ определения установленного git

Вот как я обнаруживаю git в ruby:

`which git 2>/dev/null` and $?.success?

Однако это не кроссплатформенный. -unix системы или системы без команды which (хотя я не уверен, что это такое).

Мне нужен способ обнаружения git, который удовлетворяет этим условиям:

  1. надежно работает на разных платформах, даже в Windows
  2. ничего не выводит в $ stdout или $ stderr
  3. небольшой объем кода

] Обновление: решение состоит в том, чтобы полностью отказаться от использования , который и перенаправить вывод на NUL в Windows.

require 'rbconfig'
void = RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
system "git --version >>#{void} 2>&1"

Команда system возвращает истину в случае успеха и ложь в случае неудачи, экономя нам путь к $ ?. success? , который необходим при использовании обратных кавычек.

6
задан mislav 6 January 2011 в 16:09
поделиться