GIT-VERSION-GEN: make use of git describe --dirty
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/3 GIT-VERSION-GEN: make use of git describe --dirty
Currently, GIT-VERSION-GEN invokes the plumbing commands "git update-index" and "git diff-index" to determine if the working tree is dirty. It then appends "-dirty" to the version string returned by "git describe".
However, as of Git v1.6.6, "git describe" can be told to do all that with the "--dirty" option, saving us the plumbing.
--- GIT-VERSION-GEN | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-)
GIT-VERSION-GEN +2 -5
@@ -12,13 +12,10 @@ if test -f version then VN=$(cat version) || VN="$DEF_VER" elif test -d .git -o -f .git && - VN=$(git describe --match "v[0-9]*" --abbrev=4 HEAD 2>/dev/null) && + VN=$(git describe --match "v[0-9]*" --abbrev=4 --dirty 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" ;; + v[0-9]*) : ;; esac then VN=$(echo "$VN" | sed -e 's/-/./g');
Signature · 1 line
1.7.3.2
Quoted 6 lines · Mathias Lafeldt
Currently, GIT-VERSION-GEN invokes the plumbing commands "git update-index" and "git diff-index" to determine if the working tree is dirty. It then appends "-dirty" to the version string returned by "git describe".
However, as of Git v1.6.6, "git describe" can be told to do all that with the "--dirty" option, saving us the plumbing.
This has a minor downside, which is avoiding the nice version numbers when building Git with git 1.5.6 installed. What is the upside?
Quoted 11 lines · Jonathan Nieder
Quoted 6 lines · Mathias Lafeldt
Currently, GIT-VERSION-GEN invokes the plumbing commands "git update-index" and "git diff-index" to determine if the working tree is dirty. It then appends "-dirty" to the version string returned by "git describe".
However, as of Git v1.6.6, "git describe" can be told to do all that with the "--dirty" option, saving us the plumbing.
This has a minor downside, which is avoiding the nice version numbers when building Git with git 1.5.6 installed. What is the upside?
The upside is that the number of executed commands to get the version string is reduced from three to one.
I understand your point, though it would only be a "problem" once when doing the upgrade.
If backwards compatibility is more important here, I'd at least add a comment to GIT-VERSION-GEN. Something like:
GIT-VERSION-GEN +4 -0
@@ -16,6 +16,10 @@ elif test -d .git -o -f .git && case "$VN" in *$LF*) (exit 1) ;; v[0-9]*) + # As of Git v1.6.6, we can use "git describe --dirty" to + # determine if the working tree is dirty. However, to still + # have nice version numbers when building Git with older + # versions of git installed, we keep using plumbing. git update-index -q --refresh test -z "$(git diff-index --name-only HEAD --)" || VN="$VN-dirty" ;;
-Mathias
Quoted 27 lines · Mathias Lafeldt
Quoted 10 lines · Jonathan Nieder
Quoted 6 lines · Mathias Lafeldt
Currently, GIT-VERSION-GEN invokes the plumbing commands "git update-index" and "git diff-index" to determine if the working tree is dirty. It then appends "-dirty" to the version string returned by "git describe".
However, as of Git v1.6.6, "git describe" can be told to do all that with the "--dirty" option, saving us the plumbing.
This has a minor downside, which is avoiding the nice version numbers when building Git with git 1.5.6 installed. What is the upside?
The upside is that the number of executed commands to get the version string is reduced from three to one.
I understand your point, though it would only be a "problem" once when doing the upgrade.
If backwards compatibility is more important here, I'd at least add a comment to GIT-VERSION-GEN. Something like:
GIT-VERSION-GEN +0
-0
GIT-VERSION-GEN elif test -d .git -o -f .git && · line 25
Quoted 10 lines
GIT-VERSION-GEN +4
-0@@ -16,6 +16,10 @@ elif test -d .git -o -f .git && case "$VN" in *$LF*) (exit 1) ;; v[0-9]*) + # As of Git v1.6.6, we can use "git describe --dirty" to + # determine if the working tree is dirty. However, to still + # have nice version numbers when building Git with older + # versions of git installed, we keep using plumbing. git update-index -q --refresh test -z "$(git diff-index --name-only HEAD --)" || VN="$VN-dirty" ;;
Any feedback would be welcome.
-Mathias
Quoted 12 lines · Mathias Lafeldt
Quoted 10 lines · Mathias Lafeldt
GIT-VERSION-GEN +2
-0@@ -16,6 +16,10 @@ elif test -d .git -o -f .git && case "$VN" in *$LF*) (exit 1) ;; v[0-9]*) + # As of Git v1.6.6, we can use "git describe --dirty" to + # determine if the working tree is dirty. However, to still
Quoted 8 lines
GIT-VERSION-GEN elif test -d .git -o -f .git && · line 25
Quoted 6 lines
GIT-VERSION-GEN +2
-0+ # have nice version numbers when building Git with older + # versions of git installed, we keep using plumbing. git update-index -q --refresh test -z "$(git diff-index --name-only HEAD --)" || VN="$VN-dirty" ;;Any feedback would be welcome.
I like it, also because people who use GIT-VERSION-GEN from git repository as inspiration would get to know more modern technique.
Signature · 3 lines
Jakub Narebski Poland ShadeHawk on #git
PATCH 2/3 GIT-VERSION-GEN: tweak processing of version file
In reply to a message not in the archive- check for version file with "test -r"
- read version file using shell builtin "read" rather than "cat"
--- GIT-VERSION-GEN | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
GIT-VERSION-GEN +2 -2
@@ -8,9 +8,9 @@ LF=' # First see if there is a version file (included in release tarballs), # then try git-describe, then default. -if test -f version +if test -r version then - VN=$(cat version) || VN="$DEF_VER" + read VN 2>/dev/null < version || VN="$DEF_VER" elif test -d .git -o -f .git && VN=$(git describe --match "v[0-9]*" --abbrev=4 --dirty 2>/dev/null) && case "$VN" in
Signature · 1 line
1.7.3.2
PATCH 3/3 GIT-VERSION-GEN: style nitpicks
In reply to a message not in the archive- remove superfluous semicolon
- simplify version comparison
- remove empty lines at end of file
--- GIT-VERSION-GEN | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
GIT-VERSION-GEN +5 -5
@@ -18,7 +18,7 @@ elif test -d .git -o -f .git && v[0-9]*) : ;; esac then - VN=$(echo "$VN" | sed -e 's/-/./g'); + VN=$(echo "$VN" | sed -e 's/-/./g') else VN="$DEF_VER" fi
@@ -31,9 +31,9 @@ then else VC=unset fi -test "$VN" = "$VC" || { + +if test "$VN" != "$VC" +then echo >&2 "GIT_VERSION = $VN" echo "GIT_VERSION = $VN" >$GVF -} - - +fi
Signature · 1 line
1.7.3.2