scripts/setlocalversion: factor out 12-chars hash construction
authorMasahiro Yamada <masahiroy@kernel.org>
Sun, 23 May 2021 03:14:27 +0000 (12:14 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 26 May 2021 19:01:51 +0000 (04:01 +0900)
Both of if and else parts append exactly 12 hex chars, but in
different ways.

Factor out the else part because we need to support it without relying
on git-describe. Remove the --abbrev=12 option since we do not use the
hash from git-describe anyway.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Nico Schottelius <nico-linuxsetlocalversion@schottelius.org>
scripts/setlocalversion

index 6865df6..62c0bcc 100755 (executable)
@@ -59,24 +59,12 @@ scm_version()
                        fi
                        # If we are past a tagged commit (like
                        # "v2.6.30-rc5-302-g72357d5"), we pretty print it.
-                       #
-                       # Ensure the abbreviated sha1 has exactly 12
-                       # hex characters, to make the output
-                       # independent of git version, local
-                       # core.abbrev settings and/or total number of
-                       # objects in the current repository - passing
-                       # --abbrev=12 ensures a minimum of 12, and the
-                       # awk substr() then picks the 'g' and first 12
-                       # hex chars.
-                       if atag="$(git describe --abbrev=12 2>/dev/null)"; then
-                               echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),substr($(NF),0,13))}'
-
-                       # If we don't have a tag at all we print -g{commitish},
-                       # again using exactly 12 hex chars.
-                       else
-                               head="$(echo $head | cut -c1-12)"
-                               printf '%s%s' -g $head
+                       if atag="$(git describe 2>/dev/null)"; then
+                               echo "$atag" | awk -F- '{printf("-%05d", $(NF-1))}'
                        fi
+
+                       # Add -g and exactly 12 hex chars.
+                       printf '%s%s' -g "$(echo $head | cut -c1-12)"
                fi
 
                # Check for uncommitted changes.