Удобные для пользователя номера редакций 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