aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/setlocalversion
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/setlocalversion')
-rwxr-xr-xscripts/setlocalversion25
1 files changed, 20 insertions, 5 deletions
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index 47e75b69a2e9..00790472f641 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -1,5 +1,13 @@
1#!/bin/sh 1#!/bin/sh
2# Print additional version information for non-release trees. 2#
3# This scripts adds local version information from the version
4# control systems git, mercurial (hg) and subversion (svn).
5#
6# If something goes wrong, send a mail the kernel build mailinglist
7# (see MAINTAINERS) and CC Nico Schottelius
8# <nico-linuxsetlocalversion -at- schottelius.org>.
9#
10#
3 11
4usage() { 12usage() {
5 echo "Usage: $0 [srctree]" >&2 13 echo "Usage: $0 [srctree]" >&2
@@ -10,10 +18,17 @@ cd "${1:-.}" || usage
10 18
11# Check for git and a git repo. 19# Check for git and a git repo.
12if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then 20if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
13 # Do we have an untagged version? 21
14 if git name-rev --tags HEAD | grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$' > /dev/null; then 22 # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,
15 if tag=`git describe 2>/dev/null`; then 23 # because this version is defined in the top level Makefile.
16 echo $tag | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' 24 if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
25
26 # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),
27 # we pretty print it.
28 if atag="`git describe 2>/dev/null`"; then
29 echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
30
31 # If we don't have a tag at all we print -g{commitish}.
17 else 32 else
18 printf '%s%s' -g $head 33 printf '%s%s' -g $head
19 fi 34 fi