summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-08-24 15:24:07 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commit4297c0a55a779c5fbc5032b962d1bd766b33b581 (patch)
tree3935f53e9fda2ab5c6ef19abcab8dc0b17fcdfee /git-debrebase
parentec16cbbcad6e3905ca67bad9102da899ac8915d0 (diff)
git-debrebase: wip, before abolish Dgit.pm's global
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase28
1 files changed, 23 insertions, 5 deletions
diff --git a/git-debrebase b/git-debrebase
index 801b552..c999dd6 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,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/-/_/;