diff options
Diffstat (limited to 'bin/git/git-treehash')
-rwxr-xr-x | bin/git/git-treehash | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/git/git-treehash b/bin/git/git-treehash new file mode 100755 index 0000000..8b2d1a4 --- /dev/null +++ b/bin/git/git-treehash @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +my %opt; +use Getopt::Std; +getopts("q", \%opt); + +@ARGV = qw(HEAD ORIG_HEAD) unless @ARGV; + +for my $rev (@ARGV) { + chomp(my $res = qx{git rev-parse $rev^{tree}}); + if ($?) { $BAD++ } + else { push @{$hash{$res}}, $rev } +} + +exit 2 if $BAD; +if (keys(%hash) == 1) { + my ($res) = keys %hash; + print "$res\n" unless $opt{"q"}; + exit 0; +} else { + unless ($opt{"q"}) { + for my $res (keys %hash) { + print $res, " ", join(" ", @{$hash{$res}}), "\n"; + } + } + exit 1; +} |