Объясняем макоси, где тут у нас git


На волне ожидания выхода Git 2.0 решил проверить, а какая же у меня версия гита сейчас?

$ git --version
git version 1.8.5.2 (Apple Git-48)

Это, конечно, непорядок, и нужно было срочно обновиться до последней, 1.9.2. Казалось бы, всё просто — качаем образ с официального сайта, распаковываем и запускаем инсталятор. Однако, после того как всё завершилось с успехом, версия гита по-прежнему оставалась 1.8.5.2. В ходе небольшого исследования (командой where, чтением README и т.п.), понял, что терминал просто не знает, где лежит правильный бинарник.

Если кратко, git изначально был поставлен либо с системой, либо при установке консольных утилит xCode в каталог /usr/bin (UPD: проверил, гита в чистой системе нет, ставится с developer tools). А инсталятор  поставил новый-кленовый бинарник в /usr/local/git/bin, при этом в переменную $PATH этот каталог не попал.

Добавляем в ~/.zshrc или ~/.bashrc строчку

export PATH=/usr/local/git/bin:$PATH

Перечитываем настройки профиля ($ <strong>source ~/.zshrc</strong>)  и проверяем

git --version
git version 1.9.2

Зачем столько мучений?

Каждый раз, когда я пишу об установке какого-то софта на маке, кто-нибудь обязательно напомнит про homebrew. Чтобы не быть голословным, я решил проверить, а может и правда, поставить гит оттуда?

Для чистоты эксперимента поставил свежий OS X Maverics в VirtualBox (тут были отдельные танцы с бубном по конвертации iso-образа). На чистую ось поставил homebrew, так, как описано в мануале. В процессе установки неожиданно потребовали поставить xCode Developer Tools, а с ним, та-да-да-дам, приехал git и прописался в /usr/bin. Ну что, ставим git из homebrew:

$ brew install git
...
/usr/local/Cellar/git/2.0.0: 1324 files, 31M

Вау, поставился самый-самы свежий гит! Ну-ка проверим, доступен ли он нам?

$ git --version
git version 1.8.5.2 (Apple Git-48)

Да как же так? Почему опять ничего не работает? Может вообще удалить этот старый бинарник из /usr/bin? Такие вопросы проносятся в моей голове. Но нет, мы не будет принимать импульсивные решения, а пойдём рекомендуемым путём:

$ brew doctor
Warning: /usr/bin occurs before /usr/local/bin
...
Setting your PATH so that /usr/local/bin occurs before /usr/bin.

В общем, предлагают пойти известным путём — изменить переменную $PATH. В принципе, если у вас уже давно стоит homebrew, то велика вероятность, что переменная $PATH уже имеет нужное значение.