Mercurial > gnulib
annotate build-aux/git-version-gen @ 9719:ec87f62b97b8
Enable use of older two part flavor 'git describe'.
* build-aux/git-version-gen: If using the older two part flavor of
git version then recreate the third part now present in the
newer three part flavor of git describe.
author | Bob Proulx <bob@proulx.com> |
---|---|
date | Thu, 21 Feb 2008 09:07:10 +0100 |
parents | 54e86898dd7d |
children | c0c8409cb7a2 |
rev | line source |
---|---|
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
1 #!/bin/sh |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
2 # Print a version string. |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
3 scriptversion=2008-02-08.11 |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
4 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
5 # Copyright (C) 2007 Free Software Foundation |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
6 # |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
7 # This program is free software; you can redistribute it and/or modify |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
8 # it under the terms of the GNU General Public License as published by |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
9 # the Free Software Foundation; either version 3, or (at your option) |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
10 # any later version. |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
11 # |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
15 # GNU General Public License for more details. |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
16 # |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU General Public License |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
18 # along with this program; if not, write to the Free Software |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
20 # 02110-1301, USA. |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
21 |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
22 # This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. |
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
23 # It may be run two ways: |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
24 # - from a git repository in which the "git describe" command below |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
25 # produces useful output (thus requiring at least one signed tag) |
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
26 # - from a non-git-repo directory containing a .version file, which |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
27 # presumes this script is invoked like "./git-version-gen .tarball-version". |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
28 |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
29 case $# in |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
30 1) ;; |
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
31 *) echo 1>&2 "Usage: $0 \$srcdir/.version"; exit 1;; |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
32 esac |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
33 |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
34 tarball_version_file=$1 |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
35 nl=' |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
36 ' |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
37 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
38 # First see if there is a tarball-only version file. |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
39 # then try "git describe", then default. |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
40 if test -f $tarball_version_file |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
41 then |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
42 v=`cat $tarball_version_file` || exit 1 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
43 case $v in |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
44 *$nl*) v= ;; # reject multi-line output |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
45 [0-9]*) ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
46 *) v= ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
47 esac |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
48 test -z "$v" \ |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
49 && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
50 fi |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
51 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
52 if test -n "$v" |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
53 then |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
54 : # use $v |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
55 elif test -d .git \ |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
56 && v=`git describe --abbrev=4 HEAD 2>/dev/null` \ |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
57 && case $v in |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
58 v[0-9]*) ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
59 *) (exit 1) ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
60 esac |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
61 then |
9719
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
62 # Is this a new git that lists number of commits since the last |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
63 # tag or the previous older version that did not? |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
64 # Newer: v6.10-77-g0f8faeb |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
65 # Older: v6.10-g0f8faeb |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
66 case $v in |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
67 *-*-*) : git describe is okay three part flavor ;; |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
68 *-*) |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
69 : git describe is older two part flavor |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
70 # Recreate the number of commits and rewrite such that the |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
71 # result is the same as if we were using the newer version |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
72 # of git describe. |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
73 vtag=`echo "$v" | sed 's/-.*//'` |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
74 numcommits=`git rev-list "$vtag"..HEAD | wc -l` |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
75 v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
76 ;; |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
77 esac |
ec87f62b97b8
Enable use of older two part flavor 'git describe'.
Bob Proulx <bob@proulx.com>
parents:
9677
diff
changeset
|
78 |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
79 # Change the first '-' to a '.', so version-comparing tools work properly. |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
80 # Remove the "g" in git describe's output string, to save a byte. |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
81 v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
82 else |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
83 v=UNKNOWN |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
84 fi |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
85 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
86 v=`echo "$v" |sed 's/^v//'` |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
87 |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
88 # Don't declare a version "dirty" merely because a time stamp has changed. |
9677
54e86898dd7d
* build-aux/git-version-gen: Use "git status", not "git-status".
Jim Meyering <meyering@redhat.com>
parents:
9452
diff
changeset
|
89 git status > /dev/null 2>&1 |
9452
595a77da32de
git-version-gen: sync from coreutils.
Jim Meyering <meyering@redhat.com>
parents:
9175
diff
changeset
|
90 |
9175
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
91 dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty= |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
92 case "$dirty" in |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
93 '') ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
94 *) # Append the suffix only if there isn't one already. |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
95 case $v in |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
96 *-dirty) ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
97 *) v="$v-dirty" ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
98 esac ;; |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
99 esac |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
100 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
101 # Omit the trailing newline, so that m4_esyscmd can use the result directly. |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
102 echo "$v" | tr -d '\012' |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
103 |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
104 # Local variables: |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
105 # eval: (add-hook 'write-file-hooks 'time-stamp) |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
106 # time-stamp-start: "scriptversion=" |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
107 # time-stamp-format: "%:y-%02m-%02d.%02H" |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
108 # time-stamp-end: "$" |
c7f825e034ad
* build-aux/git-version-gen: New file, from coreutils. For details, see
Jim Meyering <jim@meyering.net>
parents:
diff
changeset
|
109 # End: |