#!/bin/sh
#
# This scripts adds local version information from the version
# control systems git, mercurial (hg) and subversion (svn).
#
# If something goes wrong, send a mail the kernel build mailinglist
# (see MAINTAINERS) and CC Nico Schottelius
# <nico-linuxsetlocalversion -at- schottelius.org>.
#
#

usage() {
	echo "Usage: $0 [srctree]" >&2
	exit 1
}

cd "${1:-.}" || usage

# Check for git and a git repo.
if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then

	atag="`git describe 2>/dev/null`"

	# Show -g<commit> if we have no tag, or just the tag
	# otherwise.
	if [ -z "${atag}" ] ; then
		printf "%s%s" -g ${head}
	else
		printf ${atag}
	fi

	# Is this git on svn?
	if git config --get svn-remote.svn.url >/dev/null; then
	        printf -- '-svn%s' "`git svn find-rev $head`"
	fi

	# Update index only on r/w media
	[ -w . ] && git update-index --refresh --unmerged > /dev/null

	# Check for uncommitted changes
	if git diff-index --name-only HEAD | grep -v "^scripts/package" \
	    | read dummy; then
		printf '%s' -dirty
	fi

	# All done with git
	exit
fi

# Check for mercurial and a mercurial repo.
# In the git case, 'git describe' will show the latest tag, and unless we are
# exactly on that tag, the number of commits since then, and last commit id.
# Mimic something similar in the Mercurial case.
if hgid=`HGRCPATH= hg id --id --tags 2>/dev/null`; then
	tag=`printf '%s' "$hgid" | cut -d' ' -f2 --only-delimited`

	# Do we have an untagged version?
	if [ -z "$tag" -o "$tag" = tip ]; then
		# current revision is not tagged, determine latest tag
		latesttag=`HGRCPATH= hg log -r. -T '{latesttag}' 2>/dev/null`
		# In case there is more than one tag on the latest tagged commit,
		# 'latesttag' will separate them by colon (:). We'll retain this.
		# In case there is no tag at all, 'null' will be returned.
		if [ "$latesttag" = "null" ]; then
			latesttag=''
		fi

		# add the commit id
		id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
		printf '%s%s%s' "${latesttag}" -hg "$id"
	else
		# current revision is tagged, just print the tag
		printf ${tag}
	fi

	# Are there uncommitted changes?
	# These are represented by + after the changeset id.
	case "$hgid" in
		*+|*+\ *) printf '%s' -dirty ;;
	esac

	# All done with mercurial
	exit
fi

# Check for svn and a svn repo.
if rev=`LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then
	rev=`echo $rev | awk '{print $NF}'`
	printf -- '-svn%s' "$rev"

	# All done with svn
	exit
fi
