Я пытаюсь разработать строку формата для передачи на git log --pretty
, чтобы каждая запись журнала заканчивалась сообщением о полной фиксации, но каждая запись журнала отделялась ровно одной пустой строкой.Проблема в том, что некоторые сообщения о полной фиксации заканчиваются символом новой строки, а некоторые - нет.
Например, допустим, у меня есть две фиксации, abc1234
и def5678
, но только abc1234
содержит новую строкув конце сообщения о полной фиксации.Вывод необработанного содержимого коммита в командной строке будет выглядеть примерно так:
[prompt]$ git cat-file commit abc1234
(...)
Title FOO
Full commit message FOO
[prompt]$ git cat-file commit def5678
(...)
Title BAR
Full commit message BAR[prompt]$
Обратите внимание, как новое приглашение оболочки появляется в конце последней строки вывода, демонстрируя, что коммит def5678
делает not содержит символ новой строки в конце сообщения полной фиксации.
Допустим, def5678
является родителем abc1234
, и я хочу вывести простой журнал, где каждая запись содержит толькокороткий хеш коммита, строка заголовка и сообщение полной фиксации.Я мог бы попробовать что-то вроде этого:
[prompt]$ git log --graph --pretty='commit %h%n%B' abc1234
* commit abc1234
| Title FOO
|
| Full commit message FOO
|
* commit def5678
| Title BAR
|
| Full commit message BAR
* commit <parent of def5678>
(...)
Обратите внимание на интервал между записями журнала.Записи для abc1234
и def5678
разделены пустой строкой (за исключением символа графика), однако записи для def5678
и его родительского элемента не являются.
Как создать строку форматачтобы интервал был согласованным даже с непоследовательным завершением сообщений полной фиксации?Встроенные симпатичные форматы medium
, full
, fuller
и email
уже делают это, но я хочу иметь возможность создавать строки произвольного формата, чтобы делать то же самое.
I 'Мы экспериментировали с последовательностями %+B
, %-B
и % B
(и их %b
и %n
эквивалентами), но я просто не могу получить постоянный интервал.
Яиспользуя Git 2.17.0, если это имеет значение.