xref: /openbmc/linux/scripts/setlocalversion (revision b04b4f78)
1#!/bin/sh
2# Print additional version information for non-release trees.
3
4usage() {
5	echo "Usage: $0 [srctree]" >&2
6	exit 1
7}
8
9cd "${1:-.}" || usage
10
11# Check for git and a git repo.
12if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
13	# Do we have an untagged tag?
14	if atag=`git describe 2>/dev/null`; then
15		echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
16	# add -g${head}, if there is no usable tag
17	else
18		printf '%s%s' -g $head
19	fi
20
21	# Is this git on svn?
22	if git config --get svn-remote.svn.url >/dev/null; then
23	        printf -- '-svn%s' "`git svn find-rev $head`"
24	fi
25
26	# Are there uncommitted changes?
27	git update-index --refresh --unmerged > /dev/null
28	if git diff-index --name-only HEAD | grep -v "^scripts/package" \
29	    | read dummy; then
30		printf '%s' -dirty
31	fi
32
33	# All done with git
34	exit
35fi
36
37# Check for mercurial and a mercurial repo.
38if hgid=`hg id 2>/dev/null`; then
39	tag=`printf '%s' "$hgid" | cut -d' ' -f2`
40
41	# Do we have an untagged version?
42	if [ -z "$tag" -o "$tag" = tip ]; then
43		id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
44		printf '%s%s' -hg "$id"
45	fi
46
47	# Are there uncommitted changes?
48	# These are represented by + after the changeset id.
49	case "$hgid" in
50		*+|*+\ *) printf '%s' -dirty ;;
51	esac
52
53	# All done with mercurial
54	exit
55fi
56
57# Check for svn and a svn repo.
58if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
59	rev=`echo $rev | awk '{print $NF}'`
60	printf -- '-svn%s' "$rev"
61
62	# All done with svn
63	exit
64fi
65