bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

git-version-gen: Add support for a git tag transformation sed script


From: Ludovic Courtès
Subject: git-version-gen: Add support for a git tag transformation sed script
Date: Fri, 28 May 2010 12:15:23 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Hello,

The patch below changes ‘git-version-gen’ so that users can pass a sed
script to transform the output of ‘git describe’, thus making it usable
to repositories where release tags don’t have the ‘vX.Y’ form currently
expected.

For example, Guile’s release tags look like ‘release_X-Y-Z’.  Thus, the
transformation script would be:

  s/^release_\([0-9]\+\)-\([0-9]\+\)-\([0-9]\+\)-/v\1.\2\.\3-/g

My copyright assignment for Gnulib isn’t complete yet, but it’s a tiny
change.

Thanks,
Ludo’.

>From 3a106f178fc24b0c547dab6da1a7f4d274d1d2f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <address@hidden>
Date: Fri, 28 May 2010 11:57:18 +0200
Subject: [PATCH] Make `git-version-gen' take a sed script to transform the git 
tag.

* build-aux/git-version-gen (tag_sed_script): New variable.  Use it to
  transform the output of "git describe" to the canonical form.

* top/GNUmakefile (_curr-ver): Pass $(git-version-gen-tag-sed-script) as
  a second argument to `git-version-gen'.
---
 build-aux/git-version-gen |   11 +++++++----
 top/GNUmakefile           |    6 ++++--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index 5a7e989..8d7cb11 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Print a version string.
-scriptversion=2010-04-26.16; # UTC
+scriptversion=2010-05-28.10; # UTC
 
 # Copyright (C) 2007-2010 Free Software Foundation, Inc.
 #
@@ -67,11 +67,13 @@ scriptversion=2010-04-26.16; # UTC
 #      echo $(VERSION) > $(distdir)/.tarball-version
 
 case $# in
-    1) ;;
-    *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
+    1|2) ;;
+    *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version 
[TAG-NORMALIZATION-SED-SCRIPT]"
+       exit 1;;
 esac
 
 tarball_version_file=$1
+tag_sed_script="${2:-s/x/x/}"
 nl='
 '
 
@@ -93,8 +95,9 @@ if test -n "$v"
 then
     : # use $v
 elif test -d .git \
-    && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
+    && v=`git describe --abbrev=4 --match="v*" HEAD 2>/dev/null \
          || git describe --abbrev=4 HEAD 2>/dev/null` \
+    && v=`echo $v | sed "$tag_sed_script"` \
     && case $v in
         v[0-9]*) ;;
         *) (exit 1) ;;
diff --git a/top/GNUmakefile b/top/GNUmakefile
index daba47a..97fea36 100644
--- a/top/GNUmakefile
+++ b/top/GNUmakefile
@@ -60,8 +60,10 @@ ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
     $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS)))
   _is-install-target ?= $(filter-out %check, $(filter 
install%,$(MAKECMDGOALS)))
   ifneq (,$(_is-dist-target)$(_is-install-target))
-    _curr-ver := $(shell cd $(srcdir) \
-                   && $(_build-aux)/git-version-gen .tarball-version)
+    _curr-ver := $(shell cd $(srcdir)                          \
+                   && $(_build-aux)/git-version-gen            \
+                         .tarball-version                      \
+                         $(git-version-gen-tag-sed-script))
     ifneq ($(_curr-ver),$(VERSION))
       ifeq ($(_curr-ver),UNKNOWN)
         $(info WARNING: unable to verify if $(VERSION) is the correct version)
-- 
1.7.0


reply via email to

[Prev in Thread] Current Thread [Next in Thread]