X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=f4602d54be75d6a8ab16d24b5e8f63cdf0249faa;hp=f56ec32e12a9833a15c69c53120d0f3708fc6011;hb=dfc092e0ec3d932e51a071000519477d0e33525c;hpb=cf4848f57b34bc2918526e8195c9ec730b11b18a diff --git a/git-debrebase b/git-debrebase index f56ec32e..f4602d54 100755 --- a/git-debrebase +++ b/git-debrebase @@ -255,6 +255,20 @@ sub read_tree_subdir ($$) { runcmd @git, qw(read-tree), "--prefix=$subdir/", $new_tree_object; } +sub read_tree_debian ($) { + my ($treeish) = @_; + read_tree_subdir 'debian', "$treeish:debian"; + rm_subdir_cached 'debian/patches'; +} + +sub read_tree_upstream ($) { + my ($treeish) = @_; + my $save = cmdoutput @git, qw(write-tree --prefix=debian/); + runcmd @git, qw(read-tree), $treeish; + read_tree_subdir 'debian', $save; + rm_subdir_cached 'debian/patches'; +}; + sub make_commit ($$) { my ($parents, $message_paras) = @_; my $tree = cmdoutput @git, qw(write-tree); @@ -867,17 +881,6 @@ sub walk ($;$$$) { my $rewriting = 0; - my $read_tree_debian = sub { - my ($treeish) = @_; - read_tree_subdir 'debian', "$treeish:debian"; - rm_subdir_cached 'debian/patches'; - }; - my $read_tree_upstream = sub { - my ($treeish) = @_; - runcmd @git, qw(read-tree), $treeish; - $read_tree_debian->($build); - }; - $#upp_cl = $upp_limit if defined $upp_limit; my $committer_authline = calculate_committer_authline(); @@ -903,9 +906,9 @@ sub walk ($;$$$) { printdebug "WALK BUILD ".($cltree//'undef'). " $method (rewriting=$rewriting)\n"; if ($method eq 'Debian') { - $read_tree_debian->($cltree); + read_tree_debian($cltree); } elsif ($method eq 'Upstream') { - $read_tree_upstream->($cltree); + read_tree_upstream($cltree); } elsif ($method eq 'StartRewrite') { $rewriting = 1; next; @@ -913,12 +916,12 @@ sub walk ($;$$$) { $breakwater = $build; next; } elsif ($method eq 'DgitImportDebianUpdate') { - $read_tree_debian->($cltree); + read_tree_debian($cltree); } elsif ($method eq 'DgitImportUpstreamUpdate') { confess unless $rewriting; my $differs = (get_differs $build, $cltree); next unless $differs & D_UPS; - $read_tree_upstream->($cltree); + read_tree_upstream($cltree); push @parents, map { $_->{CommitId} } @{ $cl->{OrigParents} }; } else { confess "$method ?";