В комплекте с git есть две гуёвые (gui, с графичеким интерфейсом) утилиты. Одна вызывается по команде git gui и позволяет работать над текущим коммитом: управлять индексом файлов, просматривать изменения, делать, собственно, коммиты (в т.ч. amend), push и pull изменений мержить ветки… Ну, думаю, тут понятно: стандартный ежедневный функционал.
Gitk же даёт возможность просматривать истории веток, изменения в коммитах и вообще всю информацию по ним. Удобная штукенция для любителей ткнуть мышкой и получить кучу полезной инфы вместо набора команд в консоли.
В сущности, конечно же, эти утилиты полностью повторяют функционал git’а консольного (иначе это было бы странным): gitk это git log —graph, а git gui объединяет команды merge, commit, pull, push и так далее.
Когда я об этом узнал, сразу, конечно, заинтересовался как такое можно провернуть на битриксовском виртуальном сервере, который вертится в VirtualBox на CentOS 6.7 безо всяких графических оболочек. Гит для меня вообще штука относительно новая, я пользуюсь им (если глянуть по первым моим коммитам) с 13 марта сего года исключительно в консоли (если быть точным, то через SSH в PuTTY, о чём в конце). Были некоторые проблемы с мержем и синхронизацией коммитов с удалённым репозиторием, но всё решалось успешно, да и шишек набить успел, что хорошо.
Тут я вкратце поведаю как установить запустить на виртуальной машине Битрикс-сервера… то есть на CentOS графическую оболочку и пощупать заветные git gui и gitk.
Следует сначала дочитать сей опус до конца, а не выполнять действия по ходу первого чтения.
Графическая оболочка XWindows + GNOME
Заходим под рутом на сервер и выполняем команду:
# yum groupinstall basic-desktop desktop-platform x11 fonts
Потребуется около 300 Мб свободного места для скачивания и установки пакетов.
После успешной установки для старта оболочки пишем:
$ startx
Эту команду могут выполнять и пользователь root, и пользователь bitrix.
Для того, чтобы закрыть оболочку и вернуться в привычную текстовую среду, выбираем Log Out в верхнем меню System, как на скриншоте справа.
Теперь я открываю терминал и перехожу в рабочую папку, где хрянятся изменяемые мной файлы (не путать с репозиторием). В случае с пользователем bitrix получается команда
$ cd www
Подразумевается, что ты сейчас находишься в домашней папке /home/bitrix (она же ~) и твой сайт находится в подпапке www. По умолчанию на виртуальных машинах серверов Битрикс всё так и есть.
Запуск GIT GUI
Сейчас можно написать в терминале git gui. Он запустится, но при запуске каждый раз будет выдавать ошибку модуля проверки правописания:
Жмёшь ОК, заходишь в Edit -> Options и выставляешь значение none у параметров Spelling Dictionary слева (для текущего репозитория) и справа (для всех других, с которыми будешь работать):
Больше такая бабуйня повторяться не будет. Если ты сейчас находишься в своём рабочем каталоге и оттуда запустил утилиту, то сейчас отобразятся все (не)сохранённые на данный момент изменения (как ты уже понял, отрабатывает простой git status). Может быть, придётся немного подождать, пока пройдёт поиск изменённых файлов.
Запуск GITK
А вот для запуска gitk потребуется немного шаманства. Сразу он не заработает и будет писать в консоли ошибку следующего текста:
Error in startup script: unknown color name "lime" (processing "-fore" option) invoked from within "$ctext tag conf m2 -fore [lindex $mergecolors 2]" (procedure "makewindow" line 347) invoked from within "makewindow" (file "/usr/local/bin/gitk" line 12434)
Заходи под рутом и делай бэкап указанного файла: /usr/local/bin/gitk
Это он самый, текстовый скрипт. Открывай его в своём текстовом редакторе и пройдись заменой по тексту: все упоминания lime нужно изменить на другой цвет в HEX-формате. У меня, например, lime стал вот таким: #99FF00
Сохраняемся, закрываем лишние окна и в терминале пишем gitk.
Вот теперь всё отлично. Опять же, если ты в рабочем каталоге, то история коммитов сразу отобразится, а иначе получишь эррор как справа и пустое окно. Закрываешь программу, делаешь cd куда надо и снова запускаешь.
Замечание 1
Работает это непосредственно в окне виртуальной машины.
Как я уже упомянул в начале, обычно я использую консоль, заходя на виртуалку по SSH через PuTTY: ввод/вывод информации в нём намного, НАМНОГО удобнее, нежели в виртуалке. Командуя startx в SSH-терминале я по невнимательности не сразу понял почему не запускается оконная среда. Первые мысли — умудрился накосячить в единственной команде установки (см. начало) или что-то пошло не так. переключившись в окно машины команда сработала.
Имей в виду эту простую вещь.
Замечание 2
Перед этими манипуляциями выдели виртуальной машине побольше ресурсов.
Из коробки там выделяется что-то около 16 Мб видеопамяти и 512 оперативной… точных чисел не помню. Если действительно чешутся руки до всех этих манипуляций, прибавь памяти машинке, да поболе. У меня выставлены такие значения: ОЗУ 1024 Мб, 2 ядра процессора и предел загрузки ЦП 70%, видеопамять 64 Мб. Через какое-то время gitk стал фыркать, что ему мало памяти, поэтому он не будет отображать файловые diff-ы при просмотре коммитов.
P.S.
Это всего лишь дополнительные плюшки, которые необязательно использовать. А на виртуальной машине это делать вряд ли получится с комфортом, учитывая резко и значительно повышающуюся потребность в ресурсах, от которых по итогу мало толку: вероятность, что ты теперь будешь использовать графическую среду постоянно вместо консоли крайне мала.
Конечно, стоит клацнуть один раз мышкой и крутануть её колесом, так сразу ты получаешь всю полезную информацию в удобном виде. В консоли пришлось бы делать это дольше, набирая команды и тем более, если использовать свои шаблоны вывода git log.
Но стоит подумать, готов ли ты выделять на это минимум в два раза больше ресурсов, чем виртуалка потребляла бы без виртуальной среды?
Настрой себе алиасы получения логов и всего такого в файле /blah-blah/.git/config, и не парь мозг.
Бобра тебе.