diff options
-rw-r--r-- | Debian/Dgit.pm | 23 | ||||
-rw-r--r-- | debian/changelog | 3 |
2 files changed, 18 insertions, 8 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 7da60f6..3657aa1 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -445,14 +445,21 @@ sub git_for_each_tag_referring ($$) { } sub git_check_unmodified () { - my @cmd = qw(git diff --quiet HEAD); - debugcmd "+",@cmd; - $!=0; $?=-1; system @cmd; - return if !$?; - if ($?==256) { - fail "working tree is dirty (does not match HEAD)"; - } else { - failedcmd @cmd; + foreach my $cached (qw(0 1)) { + my @cmd = qw(git diff --quiet); + push @cmd, qw(--cached) if $cached; + push @cmd, qw(HEAD); + debugcmd "+",@cmd; + $!=0; $?=-1; system @cmd; + return if !$?; + if ($?==256) { + fail + $cached + ? "git index contains changes (does not match HEAD)" + : "working tree is dirty (does not match HEAD)"; + } else { + failedcmd @cmd; + } } } diff --git a/debian/changelog b/debian/changelog index e413454..91dd7c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,8 @@ dgit (4.5~) unstable; urgency=medium + Bugfixes: + * When checking that the tree is clean, check the git index too. + Minor fixes: * "confess" when we die due to a warning, rather than symply dieing. |