chiark / gitweb /
dgit: clone: Create destination directory before using network
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 4587af257532c1c64036651feeb7d8c4d7fd3d85..b25d344f46a496516735dd9cb088cd76008c7341 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -132,8 +132,8 @@ our (@mergechanges) = qw(mergechanges -f);
 our (@gbp_build) = ('');
 our (@gbp_pq) = ('gbp pq');
 our (@changesopts) = ('');
-our (@pbuilder) = ("sudo -E pbuilder");
-our (@cowbuilder) = ("sudo -E cowbuilder");
+our (@pbuilder) = ("sudo -E pbuilder","--no-source-only-changes");
+our (@cowbuilder) = ("sudo -E cowbuilder","--no-source-only-changes");
 
 our %opts_opt_map = ('dget' => \@dget, # accept for compatibility
                     'curl' => \@curl,
@@ -3758,10 +3758,12 @@ sub clone ($) {
     }
     printdebug "clone main body\n";
 
-    canonicalise_suite();
-    my $hasgit = check_for_git();
     mkdir $dstdir or fail f_ "create \`%s': %s", $dstdir, $!;
     changedir $dstdir;
+
+    canonicalise_suite();
+    my $hasgit = check_for_git();
+
     runcmd @git, qw(init -q);
     record_maindir();
     setup_new_tree();
@@ -6222,7 +6224,7 @@ sub clean_tree_check_git_wd ($) {
                          (f_ <<END, $message);
 %s
 If this is just missing .gitignore entries, use a different clean
-mode, eg --clean=dpkg-source,no-check (-wdu/-wddu) to ignore them
+mode, eg --clean=dpkg-source,no-check (-wdn/-wddn) to ignore them
 or --clean=git (-wg/-wgf) to use \`git clean' instead.
 END
 }
@@ -6243,6 +6245,8 @@ sub clean_tree_check () {
        # deleted.  Since we're not, and not using the working tree
        # anyway, we can just ignore them - nothing will use them.
     } elsif ($cleanmode eq 'none') {
+    } else {
+       confess "$cleanmode ?";
     }
 }
 
@@ -6265,7 +6269,7 @@ sub clean_tree () {
        clean_tree_check();
     } elsif ($cleanmode eq 'none') {
     } else {
-       die "$cleanmode ?";
+       confess "$cleanmode ?";
     }
 }
 
@@ -7190,6 +7194,12 @@ sub parseopts () {
                     ($om = $opts_opt_map{$1})) {
                push @ropts, $_;
                push @$om, $2;
+           } elsif (m/^--([-0-9a-z]+)\!:(.*)/s &&
+                    !$opts_opt_cmdonly{$1} &&
+                    ($om = $opts_opt_map{$1})) {
+               push @ropts, $_;
+               my $cmd = shift @$om;
+               @$om = ($cmd, grep { $_ ne $2 } @$om);
            } elsif (m/^--(gbp|dpm)$/s) {
                push @ropts, "--quilt=$1";
                $quilt_mode = $1;