Simon Josefsson wrote:
> I think '9.1-dirty' would be better than '9.1' in this case, as a
> differentiator to '9.1', but I agree that probably most distributions
> will not like the '-dirty' word in there.
OK, we have a majority (PRO: Bruno, Simon; CONTRA: Bernhard). I'm
changing the suffix. This has the advantage that we drop the
| sed -e 's/dirty$/modified/'
line, that was ugly and that does not work on Solaris (because the
Solaris /usr/bin/sed program produces empty output in this situation).
> Generally, I have not experienced a scenario where the '-dirty' or now
> '-modified' version suffix actually helps with anything, and several
> scenarios (like the one with no longer reproducible generated files)
> where it actively doesn't contribute.
I think it may help
- the user who views a directory listing on ftp.gnu.org [1],
- the maintainer of a package who receives a test-suite.log as part of
a bug report. The test-suite.log contains the package's version number
in the second line. The maintainer is thus quickly alerted if
the originator was working off a git repository and had uncommitted
modifications.
[1] https://ftp.gnu.org/gnu/artanis/
2025-01-28 Bruno Haible <[email protected]>
git-version-gen: Change suffix.
* doc/package-version.texi (Propagating the package version): Drop the
git-version-gen postprocessing line, that does not work on Solaris.
* build-aux/git-version-gen: Likewise. Produce a suffix '-modified'
instead of '-dirty'.
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index 32c14e996d..da6e131c03 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
@@ -1,6 +1,6 @@
#!/bin/sh
# Print a version string.
-scriptversion=2025-01-22.18; # UTC
+scriptversion=2025-01-28.09; # UTC
# Copyright (C) 2007-2025 Free Software Foundation, Inc.
#
@@ -59,8 +59,7 @@ scriptversion=2025-01-22.18; # UTC
# AC_CONFIG_SRCDIR([@var{unique-file-in-source-dir}])
# AC_CONFIG_AUX_DIR([build-aux])
# VERSION_NUMBER=`cd $srcdir \
-# && build-aux/git-version-gen .tarball-version \
-# | sed -e 's/dirty$/modified/'`
+# && build-aux/git-version-gen .tarball-version`
# gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
# AM_INIT_AUTOMAKE([@var{options}])
#
@@ -213,20 +212,29 @@ v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`;
v=`echo "$v" |sed "s/^$prefix//"`
-# Test whether to append the "-dirty" suffix only if the version
+# The "-modified" suffix was previously called "-dirty". While this term
+# was invented by the git people to designate a checkout that is not "clean",
+# it has a negative connotation that is not in line with the fact that
+# a Free Software developer routinely works with modified source code.
+# In fact, modifying source code is the *essence* of Free Software.
+# What we need here is a term that is suitable for naming tarballs, without
+# shaming the developer. Giving a name to a tarball is something else than
+# describing the state of a git checkout.
+#
+# Test whether to append the "-modified" suffix only if the version
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
# or if it came from .tarball-version.
if test "x$v_from_git" != x; then
- # Don't declare a version "dirty" merely because a timestamp has changed.
+ # Don't declare a version "modified" merely because a timestamp has changed.
git update-index --refresh > /dev/null 2>&1
- dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
- case "$dirty" in
+ modified=`exec 2>/dev/null;git diff-index --name-only HEAD` || modified=
+ case "$modified" in
'') ;;
*) # Append the suffix only if there isn't one already.
case $v in
- *-dirty) ;;
- *) v="$v-dirty" ;;
+ *-dirty | *-modified) ;;
+ *) v="$v-modified" ;;
esac ;;
esac
fi
diff --git a/doc/package-version.texi b/doc/package-version.texi
index dc8c8e8c55..b8aa9ff96b 100644
--- a/doc/package-version.texi
+++ b/doc/package-version.texi
@@ -122,8 +122,7 @@
AC_CONFIG_SRCDIR([@var{unique-file-in-source-dir}])
AC_CONFIG_AUX_DIR([build-aux])
VERSION_NUMBER=`cd $srcdir \
- && build-aux/git-version-gen .tarball-version \
- | sed -e 's/dirty$/modified/'`
+ && build-aux/git-version-gen .tarball-version`
gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
AM_INIT_AUTOMAKE([@var{options}])
@end example
@@ -151,8 +150,7 @@
is to invoke @code{git-version-gen} at @code{autoconf} time:
@example
AC_INIT([@var{package}],
- m4_esyscmd([build-aux/git-version-gen .tarball-version \
- | sed -e 's/dirty$/modified/'])])
+ m4_esyscmd([build-aux/git-version-gen .tarball-version])])
AC_CONFIG_SRCDIR([@var{unique-file-in-source-dir}])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([@var{options}])