X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=b0c60c4a86e377b3b047b8a95e8ac47289fb6f15;hb=e473bf523d358431f9eac1356b3807636a951f85;hp=f1b322ad68450760d395ce4a1e71e0fa9ef29635;hpb=f52d69c4c3fd99b72b5402afb34fb1dbe5b64303;p=dgit.git diff --git a/dgit b/dgit index f1b322ad..b0c60c4a 100755 --- a/dgit +++ b/dgit @@ -176,6 +176,7 @@ autoflush STDOUT 1; our $supplementary_message = ''; our $split_brain = 0; +our $do_split_brain = 0; END { local ($@, $?); @@ -4492,6 +4493,7 @@ END if (madformat_wantfixup($format)) { # user might have not used dgit build, so maybe do this now: if (quiltmode_splitbrain()) { + $do_split_brain = 1; changedir $playground; quilt_make_fake_dsc($upstreamversion); my $cachekey; @@ -4501,17 +4503,22 @@ END "--quilt=%s but no cached dgit view: perhaps HEAD changed since dgit build[-source] ?", $quilt_mode; - $split_brain = 1; - $dgithead = splitbrain_pseudomerge($clogp, - $actualhead, $dgithead, - $archive_hash); - $maintviewhead = $actualhead; - changedir $maindir; - prep_ud(); # so _only_subdir() works, below - } else { + } + if (!$do_split_brain) { + # In split brain mode, do not attempt to incorporate dirty + # stuff from the user's working tree. That would be mad. commit_quilty_patch(); } } + if ($do_split_brain) { + $split_brain = 1; + $dgithead = splitbrain_pseudomerge($clogp, + $actualhead, $dgithead, + $archive_hash); + $maintviewhead = $actualhead; + changedir $maindir; + prep_ud(); # so _only_subdir() works, below + } if (defined $overwrite_version && !defined $maintviewhead && $archive_hash) { @@ -5374,14 +5381,6 @@ sub quiltify_tree_sentinelfiles ($) { return $r; } -sub quiltify_splitbrain_needed () { - if (!$split_brain) { - progress __ "dgit view: changes are required..."; - runcmd @git, qw(checkout -q -b dgit-view); - $split_brain = 1; - } -} - sub quiltify_splitbrain ($$$$$$$) { my ($clogp, $unapplied, $headref, $oldtiptree, $diffbits, $editedignores, $cachekey) = @_; @@ -5401,6 +5400,8 @@ sub quiltify_splitbrain ($$$$$$$) { local $ENV{GIT_AUTHOR_EMAIL} = $authline[1]; local $ENV{GIT_AUTHOR_DATE} = $authline[2]; + die unless $do_split_brain; + my $fulldiffhint = sub { my ($x,$y) = @_; my $cmd = "git diff $x $y -- :/ ':!debian'"; @@ -5431,7 +5432,6 @@ END } if ($quilt_mode =~ m/gbp|unapplied/ && ($diffbits->{O2A} & 01)) { # some patches - quiltify_splitbrain_needed(); progress __ "dgit view: creating patches-applied version using gbp pq"; runcmd shell_cmd 'exec >/dev/null', gbp_pq, qw(import); # gbp pq import creates a fresh branch; push back to dgit-view @@ -5448,7 +5448,6 @@ END } if (($diffbits->{O2H} & 02) && # user has modified .gitignore !($diffbits->{O2A} & 02)) { # patches do not change .gitignore - quiltify_splitbrain_needed(); progress __ "dgit view: creating patch to represent .gitignore changes"; ensuredir "debian/patches"; @@ -5789,12 +5788,7 @@ sub build_maybe_quilt_fixup () { check_for_vendor_patches(); - if (quiltmode_splitbrain) { - fail <