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) = @_;
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.
# 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
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/-/_/;