summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Debian/Dgit.pm23
-rw-r--r--debian/changelog3
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.