Удобные для пользователя номера редакций Git?

Я использую Git для проекта кодирования в Google Code.

Как мне получить номера ревизий, чтобы они были чем-то значимым Alpha v1.0 или же r86 вместо d68838463ecf или другой беспорядок, как это.

4 ответа

Решение

Всем коммитам git присваивается криптографически безопасный тег sha1, подобный тому, который вы вставили. Если вы хотите пометить конкретный коммит, вы должны использовать git tag и пометить коммит любой выбранной вами меткой.

git tag "Release 1.0" 1f42f25b0e

Поскольку git распространяется, у него не было возможности использовать синхронные номера коммитов (например, SVN) без необходимости взаимодействия всех дистрибутивов друг с другом. Кроме того, достаточно математически достаточно длинной строки, чтобы обеспечить уникальность имени коммита. Вот почему sha1 используется в качестве уникального имени коммита, но вы можете пометить тегами сверху.

Как уже упоминалось, с помощью Git нет способа получить "красивые" номера ревизий. Если вы хотите это и DVCS, обратитесь к Mercurial. Тем не менее, обратите внимание, что инкрементные ревизии Mercurial являются просто удобной нотацией.

Что касается git, это не должно влиять на вашу схему нумерации версий. Вы можете создать свою собственную схему нумерации версий, которая, как мы надеемся, вменяема, и тэг фиксирует соответственно Например, когда вы достигли версии 1.0, пометьте коммит:

$ git tag -a v1.0

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

Это создает тег, и теперь git describe скажу вам это:

$ git describe
v1.0

Теперь все становится интересным, если вы делаете что-то еще и больше не указываете на тег. Затем, git describe все еще полезно:

$ git describe
v1.0-1-g9f52f48

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

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

Так как идентификатор редакции Git является шестнадцатеричным, вы можете преобразовать его в десятичное число (ваш пример разберется с 235880548024015) и затем смоделировать его в номер сборки, который вы можете использовать в схеме управления версиями ver.sub.rev.build. Однако, как сказал Бен, это хеш SHA1; как таковой, он подвержен "лавинному эффекту", когда небольшое изменение на входе вносит огромный вклад в выход. Таким образом, номера сборки, сгенерированные из ревизии, не будут последовательными.

Вы можете использовать git-tag для этого.

git tag yourTag1.0 ed851a...<-The second param is the commit hash you want to tag

Чтобы увидеть тег вы можете сделать следующее

git log --decorate

Вы можете получить что-то вроде следующего

commit ed851a7107f457935b0c6f75c4458116024a37e2 (HEAD, tag: myTag1.8, master)
Author: Jerry test <Jerry.test@test.com>
Date:   Wed May 2 16:47:11 2012 -0400

    testing
Другие вопросы по тегам