git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 00/18] version-gen: complete revamp/rewrite

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 14, 2023, 12:18 UTC
Message-ID
<20230414121841.373980-1-felipe.contreras@gmail.com>
The version generation script needs some love, as the last true change was done in 2008.
This series step by step revamps the whole script ending in only a few lines of code:
    get_version () {
        test -f version && cat version && return
        git describe --match "v[0-9]*" --dirty 2>/dev/null | sed -e 's/-/+/' -e 's/^v//'
    }
    NEW="GIT_VERSION = $(get_version)"
    test -r GIT-VERSION-FILE && test "$NEW" = "$(cat GIT-VERSION-FILE)" && exit
    echo "$NEW" | tee GIT-VERSION-FILE >&2

There should be no functional changes except for the last patch that changes interim version from `2.40.0.$n.g${oid}` to `2.40.0+$n-g${oid}` as that causes the proper sorting.

It's hard to see the actual changes to this script as 99% of the commits are just to bump the default version (which I don't know why it even exists).

For reference, cleaning the history I came up with these actual changes in case anyone is interested:

c48799e560 (Teach GIT-VERSION-GEN about the .git file, 2008-02-20) 1100ac81a9 (Change GIT-VERSION-GEN to call git commands with "git" not "git-"., 2006-05-22) 374dfaa2e3 (Make GIT-VERSION-GEN tolerate missing git describe command again, 2006-01-26) 5c7d3c9507 (Allow building of RPM from interim snapshot., 2006-01-16) 181129d24c (For release tarballs, include the proper version, 2006-01-09) 026351a035 (Make GIT-VERSION-GEN tolerate missing git describe command, 2005-12-30) 9b88fcef7d (Makefile: use git-describe to mark the git version., 2005-12-27)

Cheers.
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 9a1111af9b..99584bf86d 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,40 +1,11 @@
 #!/bin/sh
 
-GVF=GIT-VERSION-FILE
-DEF_VER=v2.40.GIT
-
-LF='
-'
-
-# First see if there is a version file (included in release tarballs),
-# then try git-describe, then default.
-if test -f version
-then
-	VN=$(cat version) || VN="$DEF_VER"
-elif test -d ${GIT_DIR:-.git} -o -f .git &&
-	VN=$(git describe --match "v[0-9]*" HEAD 2>/dev/null) &&
-	case "$VN" in
-	*$LF*) (exit 1) ;;
-	v[0-9]*)
-		git update-index -q --refresh
-		test -z "$(git diff-index --name-only HEAD --)" ||
-		VN="$VN-dirty" ;;
-	esac
-then
-	VN=$(echo "$VN" | sed -e 's/-/./g');
-else
-	VN="$DEF_VER"
-fi
-
-VN=$(expr "$VN" : v*'\(.*\)')
-
-if test -r $GVF
-then
-	VC=$(sed -e 's/^GIT_VERSION = //' <$GVF)
-else
-	VC=unset
-fi
-test "$VN" = "$VC" || {
-	echo >&2 "GIT_VERSION = $VN"
-	echo "GIT_VERSION = $VN" >$GVF
+get_version () {
+	test -f version && cat version && return
+	git describe --match "v[0-9]*" --dirty 2>/dev/null | sed -e 's/-/+/' -e 's/^v//'
 }
+
+NEW="GIT_VERSION = $(get_version)"
+
+test -r GIT-VERSION-FILE && test "$NEW" = "$(cat GIT-VERSION-FILE)" && exit
+echo "$NEW" | tee GIT-VERSION-FILE >&2

Felipe Contreras (18):
  version-gen: reorganize
  version-gen: trivial cleanup
  version-gen: refactor default version
  version-gen: simplify v prefix removal
  version-gen: simplify update check
  version-gen: remove redundant check
  version-gen: simplify `git describe` checks
  version-gen: simplify dirty check
  version-gen: move describe fix into function
  version-gen: describe and sed in one go
  version-gen: refactor describe function
  version-gen: do v fix only when necessary
  version-gen: move v fix into sed
  version-gen: refactor main functionality
  version-gen: remove default version
  version-gen: refactor GIT_VERSION string
  version-gen: get rid of GVF variable
  version-gen: generate proper interim versions

 GIT-VERSION-GEN | 45 ++++++++-------------------------------------
 1 file changed, 8 insertions(+), 37 deletions(-)
-- 
2.40.0+fc1
Next: Felipe Contreras
Message 1 of 24 in “version-gen: complete revamp/rewrite”
  1. 00/18 version-gen: complete revamp/rewriteFelipe Contreras, Apr 14, 2023
  2. 01/18 version-gen: reorganizeFelipe Contreras, Apr 14, 2023
  3. 02/18 version-gen: trivial cleanupFelipe Contreras, Apr 14, 2023
  4. 03/18 version-gen: refactor default versionFelipe Contreras, Apr 14, 2023
  5. 04/18 version-gen: simplify v prefix removalFelipe Contreras, Apr 14, 2023
  6. 05/18 version-gen: simplify update checkFelipe Contreras, Apr 14, 2023
  7. 07/18 version-gen: simplify `git describe` checksFelipe Contreras, Apr 14, 2023
  8. 06/18 version-gen: remove redundant checkFelipe Contreras, Apr 14, 2023
  9. Todd ZullingerApr 14, 2023
  10. Felipe ContrerasApr 14, 2023
  11. Todd ZullingerApr 14, 2023
  12. Felipe ContrerasApr 14, 2023
  13. Todd ZullingerApr 14, 2023
  14. 08/18 version-gen: simplify dirty checkFelipe Contreras, Apr 14, 2023
  15. 09/18 version-gen: move describe fix into functionFelipe Contreras, Apr 14, 2023
  16. 11/18 version-gen: refactor describe functionFelipe Contreras, Apr 14, 2023
  17. 10/18 version-gen: describe and sed in one goFelipe Contreras, Apr 14, 2023
  18. 13/18 version-gen: move v fix into sedFelipe Contreras, Apr 14, 2023
  19. 15/18 version-gen: remove default versionFelipe Contreras, Apr 14, 2023
  20. 12/18 version-gen: do v fix only when necessaryFelipe Contreras, Apr 14, 2023
  21. 14/18 version-gen: refactor main functionalityFelipe Contreras, Apr 14, 2023
  22. 17/18 version-gen: get rid of GVF variableFelipe Contreras, Apr 14, 2023
  23. 16/18 version-gen: refactor GIT_VERSION stringFelipe Contreras, Apr 14, 2023
  24. 18/18 version-gen: generate proper interim versionsFelipe Contreras, Apr 14, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.