Получение часового пояса в довольно отформатированном выводе журнала git (спецификатор формата)? - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь распечатать журнал git с отметкой времени в секундах эпохи UTC / UNIX, часовым поясом фиксации и коротким хешем.

Я заметил https://git -scm.com / docs/git-log/2.17.1:

% объявление: дата автора (с учетом формата --date = опция)

% по адресу: дата автора, метка времени UNIX

  • - date = raw показывает дату в секундах с начала эпохи (1970-01-01 00:00:00 UTC), затем пробел, а затем часовой пояс как смещение от UTC (+ или - с четырьмя цифрами: первые два часа, а вторые две минуты).Т.е. как будто отметка времени была отформатирована с strftime("%s %z")).Обратите внимание, что параметр -local не влияет на значение секунд с момента появления (которое всегда измеряется в UTC), но переключает соответствующее значение часового пояса.

Итак, я наивно пыталсяэто сначала:

$ git --no-pager log --reverse --pretty='%at %z %h'
1528917616 %z 1cabbe9
1528960200 %z 3fad300
1528964789 %z ba4e746
1528964798 %z d39a4f8
...

Очевидно, что %z не расширяется в журнале git --pretty / --format.

Затем, несколько случайно, я попробовал это:

$ git --no-pager log --reverse --date=raw --pretty='%ad %h'
1528917616 +0000 1cabbe9
1528960200 +0000 3fad300
1528964789 +0000 ba4e746
1528964798 +0000 d39a4f8
1528967981 +0000 a9cdecb
1528970465 +0000 3e9cee9
....

... и это именно то, что я хотел!За исключением того, что здесь у меня нет отдельного аргумента формата для часового пояса, поэтому я не могу переместить его в другое место, если захочу, по крайней мере, напрямую в команду git log.

Итак, кто-нибудь знает,если есть спецификатор формата, который я мог бы использовать непосредственно в git log, и который получит мне только часовой пояс временной метки коммита?

1 Ответ

0 голосов
/ 25 декабря 2018

In git log, --pretty (или --format) не имеют местозаполнителя для часового пояса.Но --date=format: делает.Кажется, --date=raw эквивалентно --date=format:"%s %z".Поэтому, если вам нужен только часовой пояс конкретного коммита, вы можете попробовать:

git log -1 <commit> --pretty=%ad --date=format:%z

Обратите внимание, что %ad для даты автора.Если вам нужна дата фиксации, используйте %cd.Кроме того, есть несколько заполнителей для предопределенных форматов даты, таких как %ai, %at, %cD и т. Д. Если используется любой из этих заполнителей, --date=format просто игнорируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...