chiark / gitweb /
git-debrebase: classify: introduce $prevbrw (nfc)
[dgit.git] / git-debrebase
index c999dd62c89390f5ffdee37b2d502245515ab6bd..a3733a989d62ee890af7a8c948fe54443c5846a5 100755 (executable)
@@ -144,21 +144,19 @@ sub D_PAT_OTH () { return 0x8; } # debian/patches other changes
 
 our $playprefix = 'debrebase';
 our $rd;
+our $workarea;
 
 our @git = qw(git);
 
 sub in_workarea ($) {
     my ($sub) = @_;
-    changedir "$playground/work";
+    changedir $workarea;
     my $r = eval { $sub->(); };
     changedir $maindir;
 }
 
 sub fresh_workarea () {
-    do {
-       local $playground;
-       fresh_playground "$playprefix/work";
-    };
+    $workarea = fresh_playground "$playprefix/work";
     in_workarea sub { playtree_setup };
 }
 
@@ -400,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
 
@@ -707,8 +708,7 @@ enabledebug if $debuglevel;
 my $toplevel = cmdoutput @git, qw(rev-parse --show-toplevel);
 chdir $toplevel or die "chdir $toplevel: $!";
 
-fresh_playground $playprefix;
-$rd = ensure_a_playground "playprefix/misc";
+$rd = fresh_playground "$playprefix/misc";
 
 my $cmd = shift @ARGV;
 my $cmdfn = $cmd;