X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=6a035d6a2fc8800c4c723ffa3620594870d9c558;hb=676ab414d093c6eb3e1eacfd9220a0d9b1c88b97;hp=920787457bd271b3aecef6d0eecb8c1f924d9200;hpb=fe216b34e36c059be82c18cfe850c729e5c8df21;p=dgit.git diff --git a/dgit b/dgit index 92078745..6a035d6a 100755 --- a/dgit +++ b/dgit @@ -943,6 +943,20 @@ sub access_forpush () { return $access_forpush; } +sub default_from_access_cfg ($$$;$) { + my ($var, $keybase, $defval, $permit_re) = @_; + return if defined $$var; + + $$var = access_cfg("$keybase-newer", 'RETURN-UNDEF'); + $$var = undef if $$var && $$var !~ m/^$permit_re$/; + + $$var //= access_cfg($keybase, 'RETURN-UNDEF'); + $$var //= $defval; + + badcfg f_ "unknown %s \`%s'", $keybase, $$var + if defined $permit_re and $$var !~ m/$permit_re/; +} + sub pushing () { confess +(__ 'internal error').' '.Dumper($access_forpush)," ?" if defined $access_forpush and !$access_forpush; @@ -4120,6 +4134,7 @@ sub pseudomerge_version_check ($$) { $cd = $gf->('Distribution'); }; if ($@) { + $@ =~ s/^\n//s; $@ =~ s/^dgit: //gm; fail "$@". f_ "Perhaps debian/changelog does not mention %s ?", $v; @@ -5510,16 +5525,6 @@ END [dgit ($our_version) update-gitignore-quilt-fixup] ENDU } - - my $dgitview = git_rev_parse 'HEAD'; - - changedir $maindir; - reflog_cache_insert "refs/$splitbraincache", $cachekey, $dgitview; - - changedir "$playground/work"; - - my $saved = maybe_split_brain_save $headref, $dgitview, __ "converted"; - progress f_ "dgit view: created (%s)", $saved; } sub quiltify ($$$$) { @@ -5800,8 +5805,6 @@ sub quiltify ($$$$) { runcmd @git, qw(checkout -q), $cc, qw(debian/changelog); } - - runcmd @git, qw(checkout -q master); } sub build_maybe_quilt_fixup () { @@ -5854,6 +5857,19 @@ sub build_maybe_quilt_fixup () { $splitbrain_cachekey); } + if ($do_split_brain) { + my $dgitview = git_rev_parse 'HEAD'; + + changedir $maindir; + reflog_cache_insert "refs/$splitbraincache", + $splitbrain_cachekey, $dgitview; + + changedir "$playground/work"; + + my $saved = maybe_split_brain_save $headref, $dgitview, __ "converted"; + progress f_ "dgit view: created (%s)", $saved; + } + changedir $maindir; runcmd_ordryrun_local @git, qw(pull --ff-only -q), "$playground/work", qw(master); @@ -6288,6 +6304,7 @@ END progress f_ "starting quiltify (multiple patches, %s mode)", $quilt_mode; quiltify($clogp,$headref,$oldtiptree,\@failsuggestion); + runcmd @git, qw(checkout -q), (qw(master dgit-view)[!!$do_split_brain]); if (!open P, '>>', ".pc/applied-patches") { $!==&ENOENT or confess "$!"; @@ -6772,7 +6789,7 @@ sub build_source { unlink "$buildproductsdir/$sourcechanges" or $!==ENOENT or fail f_ "remove %s: %s", $sourcechanges, $!; } - confess unless !!$made_split_brain == !!$do_split_brain; +# confess unless !!$made_split_brain == !!$do_split_brain; my @cmd = (@dpkgsource, qw(-b --)); my $leafdir; @@ -7400,10 +7417,10 @@ sub parseopts () { } elsif (m/^--delayed=(\d+)$/s) { push @ropts, $_; push @dput, $_; - } elsif (my ($k,$v) = - m/^--save-(dgit-view)=(.+)$/s || + } elsif (m/^--save-(dgit-view)=(.+)$/s || m/^--(dgit-view)-save=(.+)$/s ) { + my ($k,$v) = ($1,$2); push @ropts, $_; $v =~ s#^(?!refs/)#refs/heads/#; $internal_object_save{$k} = $v; @@ -7584,16 +7601,10 @@ sub parseopts_late_defaults () { $$vr = $v; } - if (!defined $cleanmode) { + { local $access_forpush; - $cleanmode = access_cfg('clean-mode-newer', 'RETURN-UNDEF'); - $cleanmode = undef if $cleanmode && $cleanmode !~ m/^$cleanmode_re$/; - - $cleanmode //= access_cfg('clean-mode', 'RETURN-UNDEF'); - $cleanmode //= 'dpkg-source'; - - badcfg f_ "unknown clean-mode \`%s'", $cleanmode unless - $cleanmode =~ m/$cleanmode_re/; + default_from_access_cfg(\$cleanmode, 'clean-mode', 'dpkg-source', + $cleanmode_re); } $buildproductsdir //= access_cfg('build-products-dir', 'RETURN-UNDEF');