X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=a3733a989d62ee890af7a8c948fe54443c5846a5;hp=801b552ab5b5a142f382f720aac78d506078d493;hb=78dfec329693691f0ff468e444d7ae19aec220d1;hpb=ec16cbbcad6e3905ca67bad9102da899ac8915d0 diff --git a/git-debrebase b/git-debrebase index 801b552a..a3733a98 100755 --- a/git-debrebase +++ b/git-debrebase @@ -110,9 +110,7 @@ use POSIX; use Data::Dumper; use Getopt::Long qw(:config posix_default gnu_compat bundling); -use Debian::Dgit qw(:DEFAULT $wa); - -$wa = '.git/debrebase/work'; +use Debian::Dgit qw(:DEFAULT :playground); sub badusage ($) { my ($m) = @_; @@ -143,10 +141,25 @@ sub D_UPS () { return 0x2; } # upstream files sub D_PAT_ADD () { return 0x4; } # debian/patches/ extra patches at end sub D_PAT_OTH () { return 0x8; } # debian/patches other changes -our $rd = ".git/git-debrebase"; -our $ud = "$rd/work"; + +our $playprefix = 'debrebase'; +our $rd; +our $workarea; + our @git = qw(git); +sub in_workarea ($) { + my ($sub) = @_; + changedir $workarea; + my $r = eval { $sub->(); }; + changedir $maindir; +} + +sub fresh_workarea () { + $workarea = fresh_playground "$playprefix/work"; + in_workarea sub { playtree_setup }; +} + sub get_differs ($$) { my ($x,$y) = @_; # This resembles quiltify_trees_differ, in dgit, a bit. @@ -385,13 +398,16 @@ sub classify ($) { # debian/) so debian breakwater branch should be 1st parent; that # way also there's also an easy rune to look for the upstream # patches (--topo-order). + + my $prevbrw = 0; + if (@p == 2 && !$haspatches && - !$p[0]{IsOrigin} && # breakwater merge never starts with an origin - !($p[0]{Differs} & ~D_DEB) && - !($p[1]{Differs} & ~D_UPS)) { + !$p[$prevbrw]{IsOrigin} && # breakwater never starts with an origin + !($p[$prevbrw]{Differs} & ~D_DEB) && + !($p[!$prevbrw]{Differs} & ~D_UPS)) { return $classify->(qw(BreakwaterUpstreamMerge), - OrigParents => [ $p[1] ]); + OrigParents => [ $p[!$prevbrw] ]); } # xxx multi-.orig upstreams @@ -692,6 +708,8 @@ enabledebug if $debuglevel; my $toplevel = cmdoutput @git, qw(rev-parse --show-toplevel); chdir $toplevel or die "chdir $toplevel: $!"; +$rd = fresh_playground "$playprefix/misc"; + my $cmd = shift @ARGV; my $cmdfn = $cmd; $cmdfn =~ y/-/_/;