summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase32
1 files changed, 24 insertions, 8 deletions
diff --git a/git-debrebase b/git-debrebase
index b015e88..f72625d 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -329,6 +329,7 @@ sub gbp_pq_export ($$$) {
# must be run in a workarea. $bname and patch-queue/$bname
# ought not to exist. Leaves you on patch-queue/$bname with
# the patches staged but not committed.
+ printdebug "gbp_pq_export $bname $base $tip\n";
runcmd @git, qw(checkout -q -b), $bname, $base;
runcmd @git, qw(checkout -q -b), "patch-queue/$bname", $tip;
my @gbp_cmd = (qw(gbp pq export));
@@ -369,6 +370,8 @@ sub merge_series ($$;@) {
# Creates, in *_q, a key MR for its private use
+ printdebug "merge_series newbase=$newbase\n";
+
$input_qs[$_]{MR}{S} = $_ foreach (0..$#input_qs);
$base_q->{MR}{S} = 'base';
@@ -407,17 +410,20 @@ sub merge_series ($$;@) {
"[git-debrebase merge-innards patch-queue import:".
" $q->{SeriesTip}]"
];
+ printdebug "merge_series pec $pec ";
runcmd @git, qw(rm -q --cached), $seriesfile;
$pec = make_commit [ $pec ], [
"Drop series file from $s to avoid merge trouble",
"[git-debrebase merge-innards patch-queue prep:".
" $q->{SeriesTip}]"
];
+ printdebug "pec' $pec\n";
runcmd @git, qw(reset -q --hard), $pec;
$q->{MR}{PEC} = $pec;
}
# now, because of reverse, we are on $input_q->{MR}{OQC}
runcmd @git, qw(checkout -q -b merge);
+ printdebug "merge_series merging...\n";
my @mergecmd = (@git, qw(merge --quiet --no-edit), "p-1");
debugcmd '+', @mergecmd;
$!=0; $?=-1;
@@ -425,23 +431,29 @@ sub merge_series ($$;@) {
failedcmd @mergecmd;
}
+ printdebug "merge_series merge ok, series...\n";
# We need to construct a new series file
# Firstly, resolve prereq
- foreach my $f (keys %prereq) {
+ foreach my $f (sort keys %prereq) {
+ printdebug "merge_series patch\t$f\t";
if (!stat_exists "debian/patches/$f") {
+ print DEBUG " drop\n" if $debuglevel;
# git merge deleted it; that's how we tell it's not wanted
delete $prereq{$f};
next;
}
- foreach my $g (keys %{ $prereq{$f} }) {
+ print DEBUG " keep\n" if $debuglevel;
+ foreach my $g (sort keys %{ $prereq{$f} }) {
my $gfp = $prereq{$f}{$g};
- next unless
- # want to keep it
- !!$gfp->{0} == !!$gfp->{1}
+ printdebug "merge_series prereq\t$f\t-> $g\t";
+ if (!!$gfp->{0} == !!$gfp->{1}
? $gfp->{0}
- : !$gfp->{base}
- ;
- delete $prereq{$f}{$g};
+ : !$gfp->{base}) {
+ print DEBUG "\tkeep\n" if $debuglevel;
+ } else {
+ print DEBUG "\tdrop\n" if $debuglevel;
+ delete $prereq{$f}{$g};
+ }
}
}
@@ -480,6 +492,7 @@ sub merge_series ($$;@) {
}
$best = $try;
}
+ printdebug "merge_series series next $best\n";
print NS "$best\n" or die $!;
delete $prereq{$best};
foreach my $gp (values %prereq) {
@@ -490,15 +503,18 @@ sub merge_series ($$;@) {
runcmd @git, qw(add), $seriesfile;
runcmd @git, qw(commit --quiet -m), 'Merged series';
+ printdebug "merge_series series gbp pq import\n";
runcmd qw(gbp pq import);
# OK now we are on patch-queue/merge, and we need to rebase
# onto the intended parent and drop the patches from each one
+ printdebug "merge_series series ok, building...\n";
my $build = $newbase;
my @lcmd = (@git, qw(rev-list --reverse merge..patch-queue/merge));
foreach my $c (grep /./, split /\n/, cmdoutput @lcmd) {
my $commit = git_cat_file $c, 'commit';
+ printdebug "merge_series series ok, building $c\n";
read_tree_upstream $c;
my $tree = cmdoutput @git, qw(write-tree);
$commit =~ s{^parent (\S+)$}{parent $build}m or confess;