chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-debrebase: Merge: Make a todo about gbp not round tripping
[dgit.git]
/
git-debrebase
diff --git
a/git-debrebase
b/git-debrebase
index 66167b2bafd501671885cbb7db43984d200d6aa5..3be444b935e4af4e02a2e50e2e61cbf0230e4b81 100755
(executable)
--- a/
git-debrebase
+++ b/
git-debrebase
@@
-50,11
+50,9
@@
usages:
See git-debrebase(1), git-debrebase(5), dgit-maint-debrebase(7) (in dgit).
END
See git-debrebase(1), git-debrebase(5), dgit-maint-debrebase(7) (in dgit).
END
-our ($opt_force, $opt_
careful, $opt_noop_ok
, @opt_anchors);
+our ($opt_force, $opt_
noop_ok, $opt_merges
, @opt_anchors);
our ($opt_defaultcmd_interactive);
our ($opt_defaultcmd_interactive);
-$opt_careful = 0;
-
our $us = qw(git-debrebase);
our $wrecknoteprefix = 'refs/debrebase/wreckage';
our $us = qw(git-debrebase);
our $wrecknoteprefix = 'refs/debrebase/wreckage';
@@
-446,11
+444,7
@@
sub gbp_pq_export ($$$) {
}
}
-# xxx allow merge resolution separately from laundering, before git merge
-#
-# xxx general gdr docs highlight forbidden things
-# xxx general gdr docs list allowable things ?
-# xxx general gdr docs explicitly forbid some rebase
+# MERGE-TODO allow merge resolution separately from laundering, before git merge
# later/rework?
# use git-format-patch?
# later/rework?
# use git-format-patch?
@@
-687,6
+681,8
@@
sub merge_series_patchqueue_convert ($$$) {
runcmd @git, qw(checkout -q -b mergec), $merged_pq;
merge_attempt_cmd($wrecknotes, qw(gbp pq import));
runcmd @git, qw(checkout -q -b mergec), $merged_pq;
merge_attempt_cmd($wrecknotes, qw(gbp pq import));
+ # MERGE-TODO consider git-format-patch etc. instead,
+ # since gbp pq doesn't always round-trip :-/
# OK now we are on patch-queue/merge, and we need to rebase
# onto the intended parent and drop the patches from each one
# OK now we are on patch-queue/merge, and we need to rebase
# onto the intended parent and drop the patches from each one
@@
-982,7
+978,6
@@
sub classify ($) {
if (@p == 2 and
$r->{Msg} =~ m{^\[git-debrebase merged-breakwater.*\]$}m) {
if (@p == 2 and
$r->{Msg} =~ m{^\[git-debrebase merged-breakwater.*\]$}m) {
- # xxx ^ metadata tag needs adding to (5)
return $classify->("MergedBreakwaters");
}
if ($r->{Msg} =~ m{^\[(git-debrebase|dgit)[: ].*\]$}m) {
return $classify->("MergedBreakwaters");
}
if ($r->{Msg} =~ m{^\[(git-debrebase|dgit)[: ].*\]$}m) {
@@
-992,7
+987,7
@@
sub classify ($) {
return $unknown->("octopus merge");
}
return $unknown->("octopus merge");
}
- if (!$
ENV{GIT_DEBREBASE_EXPERIMENTAL_MERGE}
) {
+ if (!$
opt_merges
) {
return $unknown->("general two-parent merge");
}
return $unknown->("general two-parent merge");
}
@@
-1313,7
+1308,7
@@
sub walk ($;$$$) {
# which was reachable via ffq-prev is no longer findable.
# This is suboptimal, but if it all works we'll have done
# the right thing.
# which was reachable via ffq-prev is no longer findable.
# This is suboptimal, but if it all works we'll have done
# the right thing.
- #
xxx
we should warn the user in the docs about this
+ #
MERGE-TODO
we should warn the user in the docs about this
my $ok=1;
my $best_anchor;
my $ok=1;
my $best_anchor;
@@
-1605,7
+1600,7
@@
sub walk ($;$$$) {
printdebug "WALK REWRITING NOW cl=$cl procd=$procd\n";
}
}
printdebug "WALK REWRITING NOW cl=$cl procd=$procd\n";
}
}
- if ($rewriting
|| $opt_careful
) {
+ if ($rewriting) {
read_tree_upstream $want_upstream, 0, $want_debian;
my $newtree = cmdoutput @git, qw(write-tree);
read_tree_upstream $want_upstream, 0, $want_debian;
my $newtree = cmdoutput @git, qw(write-tree);
@@
-2477,19
+2472,25
@@
END
my $mtag = cmdoutput @git, qw(describe --always --abbrev=0 --match),
$mtag_pat;
die "could not find suitable maintainer view tag $mtag_pat\n"
my $mtag = cmdoutput @git, qw(describe --always --abbrev=0 --match),
$mtag_pat;
die "could not find suitable maintainer view tag $mtag_pat\n"
- unless $mtag
_pat
=~ m{/};
+ unless $mtag =~ m{/};
is_fast_fwd $mtag, 'HEAD' or
die "HEAD is not FF from maintainer tag $mtag!";
my $dtag = "archive/$mtag";
is_fast_fwd $mtag, 'HEAD' or
die "HEAD is not FF from maintainer tag $mtag!";
my $dtag = "archive/$mtag";
+ git_get_ref "refs/tags/$dtag" or
+ die "dgit view tag $dtag not found\n";
is_fast_fwd $mtag, $dtag or
is_fast_fwd $mtag, $dtag or
- die "dgit view tag $dtag is not FF from maintainer tag $mtag";
+ die "dgit view tag $dtag is not FF from maintainer tag $mtag
\n
";
print "will stitch in dgit view, $dtag\n";
git_rev_parse $dtag;
};
if (!$previous_dgit_view) {
$@ =~ s/^\n+//;
chomp $@;
print "will stitch in dgit view, $dtag\n";
git_rev_parse $dtag;
};
if (!$previous_dgit_view) {
$@ =~ s/^\n+//;
chomp $@;
- print STDERR "cannot stitch in dgit view: $@\n";
+ print STDERR <<END;
+Cannot confirm dgit view: $@
+Failed to stitch in dgit view (see messages above).
+dgit --overwrite will be needed on the first dgit push after conversion.
+END
}
snags_maybe_bail_early();
}
snags_maybe_bail_early();
@@
-2533,6
+2534,9
@@
END
ffq_check $work;
snags_maybe_bail();
update_head_checkout $old_head, $work, 'convert-from-gbp';
ffq_check $work;
snags_maybe_bail();
update_head_checkout $old_head, $work, 'convert-from-gbp';
+ print <<END or die $!;
+git-debrebase: converted from patched-unapplied (gbp) branch format, OK
+END
}
sub cmd_convert_to_gbp () {
}
sub cmd_convert_to_gbp () {
@@
-2753,7
+2757,7
@@
END
sub cmd_record_resolved_merge () {
badusage "record-resolved-merge takes no further arguments" if @ARGV;
sub cmd_record_resolved_merge () {
badusage "record-resolved-merge takes no further arguments" if @ARGV;
- #
xxx
needs documentation
+ #
MERGE-TODO
needs documentation
my $new = get_head();
my $method;
my $new = get_head();
my $method;
@@
-2848,6
+2852,7
@@
getoptions_main
'anchor=s' => \@opt_anchors,
'--dgit=s' => \($dgit[0]),
'force!',
'anchor=s' => \@opt_anchors,
'--dgit=s' => \($dgit[0]),
'force!',
+ 'experimental-merge-resolution!', \$opt_merges,
'-i:s' => sub {
my ($opt,$val) = @_;
badusage "git-debrebase: no cuddling to -i for git-rebase"
'-i:s' => sub {
my ($opt,$val) = @_;
badusage "git-debrebase: no cuddling to -i for git-rebase"