chiark / gitweb /
run clean
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 12d3075faa37c8789e6404bc9bb1564b2ed9815f..fc310d54ff195e0249be5ce0002d626a0316e718 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -548,16 +548,31 @@ sub pull () {
     fetch();
     runcmd_ordryrun @git, qw(merge -m),"Merge from $suite [dgit]",
         lrref();
-    print "dgit ok: fetched to ".lrref()." and merged into HEAD\n";
+    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);
+    print DEBUG "actually entering push\n";
+    runcmd qw(debian/rules clean);
     my $clogp = parsechangelog();
     $package = $clogp->{Source};
     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 +686,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) {