chiark / gitweb /
git-debrebase: wip, before abolish Dgit.pm's global
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 24 Aug 2017 14:24:07 +0000 (15:24 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 11:25:49 +0000 (12:25 +0100)
git-debrebase

index 801b552..c999dd6 100755 (executable)
@@ -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,27 @@ 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 @git = qw(git);
 
+sub in_workarea ($) {
+    my ($sub) = @_;
+    changedir "$playground/work";
+    my $r = eval { $sub->(); };
+    changedir $maindir;
+}
+
+sub fresh_workarea () {
+    do {
+       local $playground;
+       fresh_playground "$playprefix/work";
+    };
+    in_workarea sub { playtree_setup };
+}
+
 sub get_differs ($$) {
     my ($x,$y) = @_;
     # This resembles quiltify_trees_differ, in dgit, a bit.
@@ -692,6 +707,9 @@ 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";
+
 my $cmd = shift @ARGV;
 my $cmdfn = $cmd;
 $cmdfn =~ y/-/_/;