#!/usr/bin/perl
# Copyright 2004 - Ryan Anderson <ryan@michonline.com>  GPL v2

use strict;
use warnings;
use Digest::MD5;
require 5.006;

if (@ARGV != 1) {
	print <<EOT;
Usage: setlocalversion <srctree>
EOT
	exit(1);
}

my ($srctree) = @ARGV;
chdir($srctree);

my @LOCALVERSIONS = ();

# We are going to use the following commands to try and determine if this
# repository is at a Version boundary (i.e, 2.6.10 vs 2.6.10 + some patches) We
# currently assume that all meaningful version boundaries are marked by a tag.
# We don't care what the tag is, just that something exists.

# Git/Cogito store the top-of-tree "commit" in .git/HEAD
# A list of known tags sits in .git/refs/tags/
#
# The simple trick here is to just compare the two of these, and if we get a
# match, return nothing, otherwise, return a subset of the SHA-1 hash in
# .git/HEAD

sub do_git_checks {
	open(H,"<.git/HEAD") or return;
	my $head = <H>;
	chomp $head;
	close(H);

	opendir(D,".git/refs/tags") or return;
	foreach my $tagfile (grep !/^\.{1,2}$/, readdir(D)) {
		open(F,"<.git/refs/tags/" . $tagfile) or return;
		my $tag = <F>;
		chomp $tag;
		close(F);
		return if ($tag eq $head);
	}
	closedir(D);

	push @LOCALVERSIONS, "g" . substr($head,0,8);
}

if ( -d ".git") {
	do_git_checks();
}

printf "-%s\n", join("-",@LOCALVERSIONS) if (scalar @LOCALVERSIONS > 0);
