Msysgit bash shell - как устранить неполадки "не может найти команду"

Мне нужна помощь в получении git расширений для работы с msysgit. Мне не повезло с расширениями git -tfs и git -fetchall, в обоих случаях это та же проблема. Аддон потребует, чтобы файл был помещен туда, где git может найти его (git -tfs.exe и git -fetchall.sh). Я понимаю, это означает, что файлы должны находиться в каталоге, который находится в переменной среды PATH. В обоих случаях я застрял в этой точке:

$ git-diffall
bash: git-diffall: command not found

или

$ git-tfs
bash: git-tfs: command not found

Когда я запускаю echo% PATH% из обычной командной оболочки, он показывает, что моя переменная path включает каталоги, где git -diffall и git -tfs. Как я могу отладить это, или я что-то упустил? Есть ли способ в msysgit для проверки пути поиска команд, что я ожидаю?

Ответ 1

Хорошо, я нашел разрыв. Это было неуловимо, пока я не начал запускать "echo $PATH" из оболочки (а не echo% PATH% из командной оболочки Windows, у которой был другой результат).

Две проблемы:

  • Когда я настроил переменные среды, у меня первоначально был "\" в конце пути. Кажется, это вызвало echo $PATH, чтобы показать недопустимые пути, такие как '/c:/directory' вместо '/c/directory/.

  • Необходима перезагрузка, чтобы изменения в переменных системной среды, сделанные через пользовательский интерфейс Windows, отражались в оболочке msysgit/ bash/git.

Ответ 2

Помимо того, что они находятся в $PATH, они также должны быть исполняемыми. Итак, в Cygwin (я осматриваю Windows, потому что вы использовали "% PATH%" вместо "$ PATH" в вашем вопросе, что относится к Windows), вы должны перейти в каталог, в котором программа git-difall, а затем введите:

chmod a+x git-diffall

Кроме того, в отличие от Windows, которая игнорирует расширения ".exe", ".com", ".bat" и т.д., BASH действительно заботится об этих расширениях, поэтому, если у вас есть git-diffall.sh на вашем пути, вы должен был бы вызвать его как git-diffall.sh, а не как git-diffall. Если вы хотите вызвать его как git-diffall, просто удалите расширение файла. Вы можете сделать это, используя командную строку Cygwin, используя:

mv git-diffall.sh git-diffall

Кроме того, первый chmod должен использовать git-diffall или git-diffall.sh в зависимости от фактического имени.

Ответ 3

Сегодня я столкнулся с той же проблемой, но решения здесь нет, поэтому я добавлю два цента.

Если у вас есть% HOME% path, установленный в окнах - убедитесь, что:

  • он создается в настройках -user-environment, а не в системных. git сам по себе работает с системными переменными правильно, но GitExtensions принимает только HOME из пользовательских переменных.
  • он не равен git базовому каталогу. Дело в том, что msysgit рассматривает C:\Program Files (x86)\Git (или там, где вы его установили) как root / и добавляет /bin к нему в буквальном смысле так же, как и команда PATH=$HOME/bin:$PATH. Таким образом, если ваш %HOME% равен C:\Program Files (x86)\Git, у вас будет $PATH, начиная с //bin:, что явно неверно.

Ответ 4

Предупреждение, начиная с git 2.0.X/2.1 (Q3 2014), git diffall всегда будет возвращать "command not found": он был удален.

Смотрите зафиксировать 502b0a1 Джонатан Нидер (jrn) (при помощи Тим Хениган (thenigan):

contrib: удалить git-diffall

Функциональность "git diffall" script в contrib/ была включена в "git difftool" когда опция --dir-diff была добавлена ​​в v1.7.11 ( около июня 2012 г.). Как только difftool узнал эти функции, diffall script стал устаревшим.

Единственное отличие в поведении заключается в том, что при сравнении с рабочим деревом difftool копирует все файлы, измененные пользователем, обратно в рабочее дерево, когда инструмент diff выходит.
"git diffall" потребовал, чтобы параметр --copy-back сделал то же самое.
Все остальные опции diffall имеют то же значение в difftool.

Сделайте жизнь проще для людей, выбирающих инструмент для использования, удалив старый diffall script. Указатель в примечаниях к выпуску должен быть достаточным для миграции текущих пользователей.