summaryrefslogtreecommitdiffstats
path: root/bin/git/git-treehash
diff options
context:
space:
mode:
Diffstat (limited to 'bin/git/git-treehash')
-rwxr-xr-xbin/git/git-treehash27
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;
+}