#!/usr/bin/perl -w
# usage:
-# .../badcommit-fixup --test
+# .../badcommit-fixup [-- --test
# .../badcommit-fixup --real
use strict;
use IPC::Open2;
use Data::Dumper;
-die unless "@ARGV" eq "--test" or "@ARGV" eq "--real";
+my $real;
-my ($modeopt) = @ARGV;
-my $real = ($modeopt eq '--real');
+foreach my $a (@ARGV) {
+ if ($a eq '--test') {
+ $real = 0;
+ } elsif ($a eq '--real') {
+ $real = 1;
+ } else {
+ die "$a ?";
+ }
+}
+
+die unless defined $real;
my $gcfpid = open2 \*GCFO, \*GCFI, 'git cat-file --batch' or die $!;
open U, "|git update-ref -m 'dgit bad commit fixup' --stdin" or die $!;
if ($real) {
- print "detaching your HEAD\n" or die $!;
- system 'git checkout --detach' and die "$! $?";
+ $!=0; $?=0;
+ my $bare = `git rev-parse --is-bare-repository`;
+ die "$? $!" if $?;
+ if ($bare eq 'false') {
+ print "detaching your HEAD\n" or die $!;
+ system 'git checkout --detach' and die "$! $?";
+ }
}
for my $up (@updates) {