Как сделать git log cut длинными комментариями?
У меня есть псевдоним журнала git, который печатает каждую фиксацию как одну строку. Поскольку некоторые люди пишут слишком длинные однострочные записи в журнале фиксации, многие коммиты переносят на новую строку. Как я могу отформатировать вывод журнала git, чтобы вырезать комментарий после 50 символов?
Я нашел это в man-странице git -log, но он будет обрабатывать только короткие комментарии, а не сокращать длинные.
%<(<N>[,trunc|ltrunc|mtrunc]): make the next placeholder take at least N columns,
padding spaces on the right if necessary. Optionally truncate at the beginning (ltrunc),
the middle (mtrunc) or the end (trunc) if the output is longer than N columns. Note that
truncating only works correctly with N >= 2.
Ответы
Ответ 1
В документации не так ясно, какие символы нужны, но следующий пример сокращает строку темы до 50 символов:
git log --oneline --format="%h %<(50,trunc)%s"
Спецификация формата %<
, и аргументы для этого должны быть в круглых скобках. В этом случае 50 символов и усечение избытка.
Например, выполнение этого в репозитории msysGit дает:
C:\src\msysgit>git log -n 5 --format="%h [%<(12,trunc)%aN] [%<(12,trunc)%cN] %<(50,trunc)%s"
218ed04 [Sebastian ..] [Sebastian ..] Merge pull request #154 from csware/tortoisegitp..
8a920b9 [Sven Stric..] [Sven Stric..] Installer: Detect TortoiseGitPlink from Tortoise..
448e125 [dscho ] [dscho ] Merge pull request #152 from csware/syscommand
db8d1bf [Sven Stric..] [Sven Stric..] Perl readline creates empty sys$command files if..
753d3d6 [Johannes S..] [Johannes S..] Git for Windows 1.8.5.2-preview20131230
Ответ 2
Поздно к вечеринке, но эти опции также сделают это:
$ git config --global core.pager 'less -S'
или (например)
$ echo $LESS
-R
$ export LESS=-RS
Ответ 3
git log --oneline
Покажет разделенные команды фиксации (с кодами)
git log --pretty=oneline
Покажет вам полные фиксации (имеет коды)
Ответ 4
(Кажется, я полностью не могу отформатировать комментарий соответствующим образом, поэтому разместил это как ответ, но на самом деле это комментарий к ответу @patthoyts.)
Какая симпатия к trunc
заключается в том, что она колотит, поэтому вы можете использовать ее так:
git log --pretty=format:"%ad %<(50,trunc)%s %h" --date=short --reverse
чтобы получить более легкий (по крайней мере для моих глаз) обзор.
$ git log --pretty=format:"%ad %<(50,trunc)%s %h" --date=short --reverse
2015-06-15 initial commit 5099ede
2015-06-16 Layout - Responsive grid added. 6534242
2015-06-17 HTML - H1 / Title updated <title>Testpage</title.. 88ea464
2015-06-18 Updating the Hotfix changes a8fbc47
Tip - добавьте alias, скажем, trunc, чтобы сделать его легким.
git config --global alias.trunc 'log --pretty=format:"%ad %<(50,trunc)%s %h"
--date=short --reverse'
Ответ 5
Попробуйте следующее:
git log --pretty=oneline
Надеюсь, это поможет.
Ответ 6
Я поместил это в ~/bin/git-mylog
:
#!/bin/bash
COLS=$(tput cols)
git log --format="tformat:%>|(15)%C(auto)%h %Cgreen %<(20,trunc)%cn %C(auto) %<(15,trunc)%ar %<($((COLS-55)),trunc)%s" --graph
Здесь что-то происходит, но главное - использовать tput cols
чтобы получить ширину терминала, а затем сделать некоторую арифметику, чтобы обрезать ширину комментария до фактического доступного пространства, а не до фиксированной ширины.