Как исправить проблему с выравниванием в git log --graph - PullRequest
0 голосов
/ 01 сентября 2018

Я использую следующий псевдоним для рендеринга своей истории git commit на консоли, если графический интерфейс недоступен:

$ git config alias.treex
log --color --graph --pretty=format:'%C(cyan)%h%Creset - %C(cyan)%ad%Creset %<(80,trunc)%s   %C(cyan)%>(20,trunc)%an - %Cgreen%>(12)%cr%Creset' --date=format:'%d.%m.%Y %H:%M' --abbrev-commit --all

В то время как строка формата использует строковые форматы выравнивания и фиксированного размера, такие как %<(80,trunc)%s, график, представленный git log --graph, разрушает выравнивание:

Git treex result.
(нажмите, чтобы увеличить)

Как исправить причину нарушения выравнивания самим графиком?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Смещение заполнителя %h для выравнивания

Поскольку axiac ранее упоминалось, вы можете ограничить ширину первого поля. Например, если вы добавляете %>|(16) в начало определения форматирования, вы можете сдвинуть сокращенный хеш коммита (%h), чтобы завершить его хотя бы в 16-м столбце. Если вы вычтете 7 цифр %h и еще один символ пробела, вы дадите графику 8 цифр.

Ваш оригинальный формат журнала git: Unaligned git log history

Более выровненная версия, добавив %>|(16) для %h: Aligned git log history

Добавление аргумента длины

Как уже упоминалось axiac , это решение столкнется с проблемой. Когда длина вашего графика превысит 8 символов, из-за проекта, содержащего много параллельных ветвей, ваши записи в журнале будут сдвинуты еще больше. Вы должны настроить псевдоним в соответствии с текущей ситуацией в Git-проекте. К счастью, для мощных псевдонимов Git существует трюк . С помощью этого трюка вы можете передать свой псевдоним аргумент, который устанавливает количество смещенных столбцов.

Вызов вашего псевдонима с параметром 30, а затем смещение записей журнала Git на 22 столбца: Aligned git log history with argument

Установить значение по умолчанию для аргумента длины

Теперь, возможно, вы не собираетесь передавать количество столбцов каждый раз, когда вы вызываете свой псевдоним. Эта ссылка объясняет, как установить параметр по умолчанию. Таким образом, ваш псевдоним ссылается на значение по умолчанию, которое вызывается без аргумента. Как только мы это сделаем, мы сможем исправить отклонение 8 цифр непосредственно внутри псевдонима. Таким образом, переданный аргумент напрямую соответствует фактически сдвинутым столбцам.

Конечный псевдоним

Ваш окончательный псевдоним Git, принимающий аргумент для смещения записей журнала Git на x столбцов со смещением по умолчанию 8 цифр:

$ git config --global alias.treex
!f() { x=${1-16}; length=`expr $x + 8`; git log --color --graph --pretty=format:"%>|($length)%C(cyan)%h%Creset - %C(cyan)%ad%Creset %<(80,trunc)%s   %C(cyan)%>(20,trunc)%an - %Cgreen%>(12)%cr%Creset" --date=format:%d.%m.%Y; }; f
0 голосов
/ 02 сентября 2018

Вместо %<(80,trunc)%s, который говорит git log, что нужно визуализировать объект на 80 символов, вы можете использовать %<|(110,trunc)%s, который говорит, что он должен отображать объект, пока он не достигнет столбца 110 th выход. Таким образом, следующее поле после субъекта начинается со столбца 111 st и порядок восстанавливается.
(110 - это приблизительно исходные 80 символы, которые вы хотите задать для темы + размеры столбцов перед ней (%h = 7 символов, %ad = 16 символов) и разделитель символы, которые вы ставите между ними.)

Конечно, вы можете использовать другое значение. Вы также можете попытаться ограничить ширину первого поля (%h), чтобы выровнять все остальные поля, но оно не будет правильно выровнено по разделам истории, которые содержат много ветвей; поле %s большое и использует достаточно столбцов для размещения двух десятков параллельных ветвей.

Формат описан в документации git log прямо под форматом <() и присутствует во всех версиях страницы документации (которая, к сожалению, начинается с 2.3.8). Если вы используете более старую версию Git, возможно, этот формат вам недоступен. Лучший совет в этой ситуации - обновить Git до более свежей версии.

...