# git-debrebase [<options>] stitch [--prose=<for commit message>]
# git-debrebase [<options>] downstream-rebase-launder-v0 # experimental
#
-# git-debrebase [<options>] gbp2debrebase-v0 \
-# <upstream>
+# git-debrebase [<options>] convert-from-gbp <upstream-git-rev>
# problems / outstanding questions:
#
# Upstream
# AddPatches
# Mixed
-# Unknown
#
# Pseudomerge
# has additional entres in classification result
# BreakwaterUpstreamMerge
# has additional entry in classification result
# OrigParents = [ subset of Parents ] # singleton list
+#
+# Unknown
+# has additional entry in classification result
+# Why => "prose"
sub parsecommit ($;$) {
my ($objid, $p_ref) = @_;
};
my $unknown = sub {
my ($why) = @_;
- $r = { %$r, Type => qw(Unknown) };
+ $r = { %$r, Type => qw(Unknown), Why => $why };
printdebug " ** Unknown\n";
return $r;
};
%$cl,
SpecialMethod => 'DgitImportDebianUpdate',
$xmsg->("convert dgit import: debian changes")
+ }, {
+ %$cl,
+ SpecialMethod => 'DgitImportUpstreamUpdate',
+ $xmsg->("convert dgit import: upstream update",
+ " breakwater")
};
- my $differs = (get_differs $ovwr, $cl->{Tree});
- printf $report " Differs=%#x", $differs if $report;
- if ($differs & D_UPS) {
- printf $report " D_UPS" if $report;
- # This will also trigger if a non-dgit git-based NMU
- # deleted .gitignore (which is a thing that some of
- # the existing git tools do if the user doesn't
- # somehow tell them not to). Ah well.
- push @brw_cl, {
- %$cl,
- SpecialMethod => 'DgitImportUpstreamUpdate',
- $xmsg->("convert dgit import: upstream changes",
- " breakwater")
- };
- }
$prline->(" Import");
$rewrite_from_here->();
$upp_limit //= $#upp_cl; # further, deeper, patches discarded
- die 'BUG $upp_limit is not used anywhere?';
$cur = $ovwr;
next;
} else {
runcmd @git, qw(read-tree), $treeish;
$read_tree_debian->($build);
};
+
+ $#upp_cl = $upp_limit if defined $upp_limit;
my $committer_authline = calculate_committer_authline();
next;
} elsif ($method eq 'DgitImportDebianUpdate') {
$read_tree_debian->($cltree);
- rm_subdir_cached qw(debian/patches);
} elsif ($method eq 'DgitImportUpstreamUpdate') {
+ confess unless $rewriting;
+ my $differs = (get_differs $build, $cltree);
+ next unless $differs & D_UPS;
$read_tree_upstream->($cltree);
push @parents, map { $_->{CommitId} } @{ $cl->{OrigParents} };
} else {
my $newtree = cmdoutput @git, qw(write-tree);
my $ch = $cl->{Hdr};
$ch =~ s{^tree .*}{tree $newtree}m or confess "$ch ?";
- $ch =~ s{^parent .*\n}{}m;
+ $ch =~ s{^parent .*\n}{}mg;
$ch =~ s{(?=^author)}{
join '', map { "parent $_\n" } @parents
}me or confess "$ch ?";
close U or failedcmd @upd_cmd;
}
-sub cmd_gbp2debrebase () {
- badusage "needs 1 optional argument, the upstream" unless @ARGV<=1;
+sub cmd_convert_from_gbp () {
+ badusage "needs 1 optional argument, the upstream git rev"
+ unless @ARGV<=1;
my ($upstream_spec) = @ARGV;
$upstream_spec //= 'refs/heads/upstream';
my $upstream = git_rev_parse $upstream_spec;
runcmd @git, qw(checkout -q gdr-internal~0);
rm_subdir_cached 'debian/patches';
$work = make_commit ['HEAD'], [
- 'git-debrebase import: drop patch queue',
+ 'git-debrebase convert-from-gbp: drop patches from tree',
'Delete debian/patches, as part of converting to git-debrebase format.',
- '[git-debrebase: gbp2debrebase, drop patches]'
+ '[git-debrebase convert-from-gbp: drop patches from tree]'
];
# make the breakwater pseudomerge
# the tree is already exactly right
$work = git_rev_parse 'HEAD';
};
- update_head_checkout $old_head, $work, 'gbp2debrebase';
+ update_head_checkout $old_head, $work, 'convert-from-gbp';
}
sub cmd_downstream_rebase_launder_v0 () {