Журнал Git, отображать конкретные данные (по регулярному выражению) с определенным цветом - PullRequest
2 голосов
/ 22 марта 2019

Я использую эту команду для отображения журнала git:

git log --oneline --decorate --graph --all --pretty=format:'\''%C(yellow)%h %Cred%ad %Cblue%an%C(auto)%d %Creset%s'\'' --date=format:'%d.%m.%Y''

Как видите, я использую определенный формат вывода (с определенными цветами). В консоли вижу что-то вроде этого:

* 3eb268b 01.01.2019 username (origin/master, origin/HEAD, master) CODE-123 Random commit message

Вопрос следующий: как мне выделить эту часть: CODE-123?

Я пытался использовать grep, но безуспешно.

редактирует

  1. CODE-123 не является константной строкой. Это может быть TEST-2121, PJ-21 и т. Д.
  2. CODE-123 является частью сообщения о фиксации

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Хотя я понимаю, почему вы хотели бы иметь это, я бы сказал , что вы не можете сделать это с красивыми форматами git log .

Строка, которую вы хотите выделить, как мы уже прокомментировали, является частью %s заполнителя , который содержит тему сообщения фиксации (первая строка сообщения фиксации).

И цветовые коды в красивых форматах не так гибки, мы не можем создавать свои собственные заполнители или вырезать их части.

Конечно, вы могли бы направить свой журнал в любую функцию bash , чтобы изменить вывод, но, к сожалению, сделать это просто с форматом pretty не удалось.

1 голос
/ 27 марта 2019

Наконец-то получил рабочее решение:

git log --oneline --decorate --graph --pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%C(auto)%d %Creset%s' --date=format:%d.%m.%Y --color=always | grep --color=always -E '[A-Z]+-[0-9]+|$' | less -r

...