Я отвечаю за развертывание приложения и, как часть процесса развертывания, мне нужно получить последнюю отметку времени коммиттера в строгом формате ISO 8601 и поместить ее в базу данных.Для последних версий git это довольно просто:
$ git log --pretty=format:'%cI' -n1
2019-05-29T10:24:58+04:00
Но, к сожалению, у меня есть несколько более старых примеров, когда в установленном git не существует переключателя %cI
.Поэтому, чтобы приблизиться к ISO 8601, я вместо этого использую %ci
, в результате чего:
$ git log --pretty=format:%ci -n1
2019-05-29 10:24:58 +0400
В конечном итоге мы будем обновлять машины до более поздней версии операционной системы и, следовательно, до более современной версии git.,Более новые версии git имеют это на странице руководства:
• %ci: committer date, ISO 8601-like format
• %cI: committer date, strict ISO 8601 format
Но пока я хочу помассировать эту строку в стиле ISO 8601 на старых машинах в строгом формате ISO 8601, указанном выше.Я написал плохо выглядящий однострочник, чтобы сделать это, и это, кажется, работает:
$ git log --pretty=format:'%ci' -n1 | sed -e 's/ /T/1' -e 's/ //1' -e 's/.\{22\}/&:/1'
2019-05-29T10:24:58+04:00
Просто он заменяет первый пробел на T
, второй пробел - ничего и вставляет двоеточие :
на 22-й позиции персонажа.Как мне сделать это лучше?Я попытался найти способы сделать это с помощью команды date
;не повезло.