summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2013-08-17 16:54:16 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2013-08-17 16:54:16 +0100
commit204dfaf210b11dd980970166ef7fc2c2456d245c (patch)
treefe0a1997b2b59129b3edc6ccd4c6378b820eb450
parentf014eb0c1a3acacf61b760af4c76f7d6233f5504 (diff)
improve dirty checks
-rwxr-xr-xdgit14
1 files changed, 14 insertions, 0 deletions
diff --git a/dgit b/dgit
index f65b51a..da4e57c 100755
--- a/dgit
+++ b/dgit
@@ -551,6 +551,18 @@ sub pull () {
printdone "fetched to ".lrref()." and merged into HEAD";
}
+sub check_not_dirty () {
+ my $output = cmdoutput @git, qw(status --porcelain);
+ if (length $output) {
+ my $m = "tree dirty:\n$output\n";
+ if (!$dryrun) {
+ die $m;
+ } else {
+ warn $m;
+ }
+ }
+}
+
sub dopush () {
runcmd @git, qw(diff --quiet HEAD);
my $clogp = parsechangelog();
@@ -558,6 +570,7 @@ sub dopush () {
my $dscfn = "${package}_$clogp->{Version}.dsc";
stat "../$dscfn" or die "$dscfn $!";
$dsc = parsecontrol("../$dscfn");
+ check_not_dirty();
prep_ud();
chdir $ud or die $!;
print "checking that $dscfn corresponds to HEAD\n";
@@ -671,6 +684,7 @@ sub cmd_pull {
sub cmd_push {
parseopts();
die if defined $package;
+ runcmd @git, qw(diff --quiet HEAD);
my $clogp = parsechangelog();
$package = $clogp->{Source};
if (@ARGV==0) {