Git эквивалент для "журнала HG" с шаблоном? - PullRequest
0 голосов
/ 22 февраля 2019

Я нашел способ создания строки версии, совместимой с semver, из хранилища Mercurial с соответствующим тегом, используя hg log с шаблоном.Это выглядит так:

hg log -r . --template "{latesttag('re:^[vV]\d+\.\d+\.\d+') % '{node}|{tag}.{distance}|{tag}{ifeq(distance, '1', '', '-build{distance}')}{ifeq(branch, 'default', '', '+{branch}')}'}"

Возвращает три вещи: идентификатор ревизии коммита, соответствующего шаблону тега, строку версии, совместимую с .NET System.Version, и строку версии, совместимую с semver 2.0, с использованиемрасстояние тега в качестве предварительной информации, если оно больше 1 (то есть больше фактических фиксаций после пересмотра тега), и использование имени ветви в качестве метаданных сборки, если оно имеет любое значение, отличное от «по умолчанию» (например, «hotfix-JIRA-123»).

Я не против того, чтобы все это можно было отформатировать в одной команде hg log, пока я смогу получить все значения для последующего форматирования.Это просто подливка со стороны Mercurial.

Однако единственный способ увидеть то же самое в git - это использовать несколько команд, например так:

REM Returns the tag, tag distance, and node ID "abbreviated" to 40 chars (i.e. not abbreviated, LOLZ)
git describe --tags --long --match "v*.*.*" --abbrev=40
REM Returns the branch name
git rev-parse --abbrev-ref HEAD

Если git describeмог бы дополнительно вернуть имя ветки любым способом, что решило бы мою проблему, но на самом деле я не вижу ни одной команды в git, которая будет возвращать все эти значения, уже отфильтровав теговую ревизию, как это делают эти команды.

Я могу продолжать в том же духе, мне просто интересно, есть ли что-то, что я пропускаю.

...