Подтвердить что ты не робот

Имитация глобального номера версии с помощью git

Как я смогу имитировать глобальный увеличивающий номер ревизии для каждой фиксации в главной строке git?

Итак, после фиксации я хотел бы, чтобы script запускал число, где-то.

Это позволит мне легко сказать моим клиентам, что функция X была исправлена ​​в версии git XYZ.

Я ищу практический образец script, который достаточно прочен, чтобы обрабатывать толки и сливаться до определенной степени.

4b9b3361

Ответ 1

git describe дает описание версии следующим образом: v2.0-64-g835c907. Часть v2.0 - это имя последнего аннотированного тега, предшествующего фиксации, 64 - это количество коммитов после этого, а 835c907 - сокращенный идентификатор фиксации. В основном там можно идентифицировать любую ревизию в точном и удобном (хотя и техническом) способе.

Примечание. Для этого вам понадобится хотя бы один аннотированный тег. Чтобы создать его для версии v2.0 run - git tag -a v2.0, если у вас нет аннотированных тегов, эта команда завершится с ошибкой, если не будет задан запасной аргумент, например --tags или --always.

Ответ 2

Можно моделировать номер версии в git, однако важно знать, что это не идеальное совпадение, а не самое легкое для отслеживания. Лично я использую его, чтобы сделать более простые номера версий для веб-приложения, потому что я единственный разработчик. Я использую следующую функцию в своем .bashrc, чтобы получить номер версии, который затем я использую для заметок о выпуске (однако, если вы еще не очень рекомендуем пометить выпуск, то число будет просто для пользователей). Если ограничения известны, это дает гораздо более дружелюбный номер редакции.

function rgit() {
    git rev-list --abbrev-commit HEAD | wc -l | awk '{print $1}'
}

Ответ 3

Я думаю, вы путаете номера версий с номерами релизов.

Subversion использует номера версий, поскольку она может: это централизованный репозиторий. Git, конечно, имеет SHA-1 хэши не номера версий, потому что у него нет центрального репозитория (но вы это знаете).

Этот номер версии (а хеш - это технически 160-битное число, это просто не последовательный) не должно действительно беспокоить ваших клиентов. То, что они должны учитывать, - это номер выпуска. Это, когда вы упаковываете свой исходный код и говорите "это версия 2.3.4", в комплекте с примечаниями к выпуску, чтобы сказать, что изменилось.

В идеале такой список генерируется программным обеспечением отслеживания проблем, и ваш исходный код просто помечен, чтобы сказать, какая версия представляет этот номер выпуска.

Ответ 4

I (незнание git describe) использует следующий script:

#!/bin/bash

FULL_BRANCH=`git branch | grep '*'`
BRANCH_NAME=${FULL_BRANCH:2}
REV=`git rev-parse --short HEAD`

$COMMIT_NAME = $BRANCH_NAME-$REV

Это дает вам имя, которое содержит текущее имя ветки, а затем короткий идентификатор фиксации. Например: master-c03f862.

Достаточно сделать то, что вам нужно, но, возможно, git describe - правильный путь.