chiark / gitweb /
dgit: push-source dies if user tried to include uncommitted changes
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 7c63b86fd7edf8defcd9706e05b7b70f7d18f632..470c0fd9fde00d1b02d26b93e37530ee1ffc2d80 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -292,6 +292,7 @@ sub dgit_privdir () {
 sub bpd_abs () {
     my $r = $buildproductsdir;
     $r = "$maindir/$r" unless $r =~ m{^/};
+    return $r;
 }
 
 sub branch_gdr_info ($$) {
@@ -4757,6 +4758,8 @@ sub cmd_push {
 
 sub cmd_push_source {
     prep_push();
+    fail "dgit push-source: --include-dirty/--ignore-dirty does not make".
+      "sense with push-source!" if $includedirty;
     if ($changesfile) {
         my $changes = parsecontrol("$buildproductsdir/$changesfile",
                                    "source changes file");
@@ -5651,7 +5654,8 @@ sub unpack_playtree_linkorigs ($$) {
     my ($upstreamversion, $fn) = @_;
     # calls $fn->($leafname);
 
-    opendir QFD, bpd_abs();
+    my $bpd_abs = bpd_abs();
+    opendir QFD, $bpd_abs or fail "buildproductsdir: $bpd_abs: $!";
     while ($!=0, defined(my $b = readdir QFD)) {
        my $f = bpd_abs()."/".$b;
        {
@@ -6862,7 +6866,7 @@ sub parseopts () {
            } elsif (m/^--(gbp|dpm)$/s) {
                push @ropts, "--quilt=$1";
                $quilt_mode = $1;
-           } elsif (m/^--ignore-dirty$/s) {
+           } elsif (m/^--(?:ignore|include)-dirty$/s) {
                push @ropts, $_;
                $includedirty = 1;
            } elsif (m/^--no-quilt-fixup$/s) {
@@ -7065,6 +7069,9 @@ sub parseopts_late_defaults () {
 
     $need_split_build_invocation ||= quiltmode_splitbrain();
 
+    fail "dgit: --include-dirty is not supported in split view quilt mode"
+       if $split_brain && $includedirty;
+
     if (!defined $cleanmode) {
        local $access_forpush;
        $cleanmode = access_cfg('clean-mode', 'RETURN-UNDEF');