X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=37d38618572b90ce5514941021ff00355059dc48;hp=c62d1cc1e031c6e1177e84df7e5009e8d5ea3453;hb=70b522e712e52444e8c7b924502380d6413040fa;hpb=c5fa292f1f6b9517116c80d9bae313b7db4cedac diff --git a/dgit b/dgit index c62d1cc1..37d38618 100755 --- 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, @@ -2197,6 +2197,12 @@ sub check_for_vendor_patches () { __ "(nominal) distro being accessed"); } +sub check_bpd_exists () { + stat $buildproductsdir + or fail f_ "build-products-dir %s is not accessible: %s\n", + $buildproductsdir, $!; +} + sub generate_commits_from_dsc () { # See big comment in fetch_from_archive, below. # See also README.dsc-import. @@ -3062,6 +3068,7 @@ END } sub fetch_from_archive () { + check_bpd_exists(); ensure_setup_existing_tree(); # Ensures that lrref() is what is actually in the archive, one way @@ -3758,10 +3765,13 @@ 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; + check_bpd_exists(); + + canonicalise_suite(); + my $hasgit = check_for_git(); + runcmd @git, qw(init -q); record_maindir(); setup_new_tree(); @@ -6259,9 +6269,9 @@ sub clean_tree () { runcmd_ordryrun_local @cmd; clean_tree_check_git_wd __ "tree contains uncommitted files (after running rules clean)"; - } elsif ($cleanmode eq 'git') { + } elsif ($cleanmode =~ m{^git(?!-)}) { runcmd_ordryrun_local @git, qw(clean -xdf); - } elsif ($cleanmode eq 'git-ff') { + } elsif ($cleanmode =~ m{^git-ff}) { runcmd_ordryrun_local @git, qw(clean -xdff); } elsif ($cleanmode =~ m{^check}) { clean_tree_check(); @@ -6303,6 +6313,7 @@ sub build_prep_early () { sub build_prep ($) { my ($wantsrc) = @_; build_prep_early(); + check_bpd_exists(); if (!building_source_in_playtree() || ($wantsrc & WANTSRC_BUILDER)) { # Clean the tree because we're going to use the contents of # $maindir. (We trying to include dirty changes in the source @@ -7192,6 +7203,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;