take exactly 7 hex characters for GITVERSION

git-describe(3) says:

  --abbrev=<n>
      Instead of using the default 7 hexadecimal digits as the
      abbreviated object name, use <n> digits, or as many digits
      as needed to form a unique object name. An <n> of 0 will
      suppress long format, only showing the closest tag.

The number of "digits needed to form a unique object name" depends
on your git repository, e.g. 1) how you cloned it, 2) how many local
branches you have, etc.

In the full cloned repository, --abbrev=1 for v1.21.1 gave me 5-digits
as of writing (but it may increase in the future):

  $ git checkout v1.21.1
  $ git describe --tags --always --long --abbrev=1 --match 'v*'
  v1.21.1-0-g988d2

In the repository cloned with --depth 1000, it is 4-digits.

  $ git clone --depth 1000 git://git.ipxe.org/ipxe.git
  $ ipxe
  $ git checkout v1.21.1
  $ git describe --tags --always --long --abbrev=1 --match 'v*'
  v1.21.1-0-g988d

To make the version string deterministic, use --abbrev=32 and then
take the first 7 characters, which is reasonable for this project.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
pull/534/head
Masahiro Yamada 2021-12-04 03:51:37 +09:00
parent 37c2d10e0c
commit 5f810751d7
1 changed files with 2 additions and 2 deletions

View File

@ -208,7 +208,7 @@ install :
#
# Version number calculations
#
VERSIONS := $(if $(wildcard ../.git),$(shell git describe --tags --always --long --abbrev=1 --match "v*"))
VERSIONS := $(if $(wildcard ../.git),$(shell git describe --tags --always --long --abbrev=32 --match "v*"))
ifneq ($(filter v%, $(VERSIONS)),)
VERSION_TUPLE := $(subst ., ,$(subst -, ,$(patsubst v%,%,$(VERSIONS))))
@ -231,7 +231,7 @@ endif
MM_VERSION = $(VERSION_MAJOR).$(VERSION_MINOR)
VERSION = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION)
ifneq ($(GITVERSION),)
VERSION += ($(GITVERSION))
VERSION += ($(shell echo $(GITVERSION) | cut -c1-8))
endif
version :
@$(ECHO) "$(VERSION)"