Я в настоящее время использую набор трех команд для получения текущего тега, ответвления и даты и SHA1 новой фиксации.
git describe --always --tag
git log -1 --format="%H%n%aD"
git rev-parse --abbrev-ref HEAD
Который произведет что-то как:
1.2.3-5-gdeadbeef
deadbeef3b8d90071c24f51ac8f26ce97a72727b
Wed, 19 May 2010 09:12:34 +0200
master
Честно говоря, я соглашаюсь полностью с этим. Но я использую эти команды от Знатока и любого, кто использовал Знатока прежде, знает, насколько вещи как внешние команды чрезмерно увеличивают размер АНГЛИЧАНИНА. Я просто хочу сократить свой pom.xml и возможно уменьшить время выполнения немного.
git log
чрезвычайно гибкий, с большим количеством опций. Возможно, вы не сможете воспроизвести точные выходные данные трех команд выше, но вы можете подойти достаточно близко, чтобы достичь нужного эффекта.
Например:
git log --pretty=format:'%ad %h %d' --abbrev-commit --date=short -1
производит дату, SHA-1 и символические ссылки (включая теги) последнего (HEAD) коммита:
2010-05-20 45bd5e7 (HEAD, origin/master)
После чего, предположительно,sed
и/или awk
или, может быть, методы Maven-native могут выполнять тонкую настройку/полировку. Обратите внимание, что определенный тег связан с определенным коммитом, поэтому, если до HEAD было три фиксации, которые были помечены, например, «v1.0.0», вы не увидите «v1.0.0», отображаемую с вышеуказанным.
Более простая одиночная команда для предоставления краткого описания фиксации:
git describe
, который записывает последний применимый тег, количество коммитов с момента помеченного коммита и SHA1:
v3.3.0-46-g71a77dc
Я совершенно не знаком с Maven и понятия не имею, насколько легко / сложно запускать внешние процессы, поэтому не уверен, поможет ли что-либо из следующего каким-либо образом, но я подумал, что мог бы упомянуть об этом на всякий случай.
Для точной цели, которую вы описываете, т.е. для пометки сборок, в фреймворке autoconf/automake я на самом деле использую что-то вроде:
BUILDTAG="'git symbolic-ref HEAD 2> /dev/null | cut -b 12-'-'git log --pretty=format:\"%h\" -1'"
, который создает что-то, подходящее для прикрепления к концу пути программы:
master-c5282ff
Более расширенное описание, подходящее для включения в качестве комментария или печатного идентификатора:
BUILDDESC="$(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)-$(git log --pretty=format:'%h, %ad' -1)"
производит что-то вроде:
master-c5282ff, Пт Мар 12 22:19:51 2010 -0600
Я думаю, что игра с git log
, возможно, в сочетании с инструментами / методами обработки текста даст вам то, что вы хотите.
Я не использую Maven, поэтому не знаю, как вы вызываете эти команды, но добавить собственные команды в git довольно тривиально.
Создайте сценарий с именем git-tbc, который выглядит следующим образом:
#!/bin/bash
git describe --always --tag
git log -1 --format="%H%n%aD"
git rev-parse --abbrev-ref HEAD
Убедитесь, что git-tbc находится в вашем PATH, теперь вы можете вызвать «git tbc». Это то, что вы искали?