From e6d6d6bde077f1cc3611445526ce4429be7f4968 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 30 Jan 2018 17:00:05 +0000 Subject: git-debrebase: syntax fixes Signed-off-by: Ian Jackson --- git-debrebase | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'git-debrebase') diff --git a/git-debrebase b/git-debrebase index 0a73bdc..e862d4e 100755 --- a/git-debrebase +++ b/git-debrebase @@ -116,6 +116,7 @@ use Carp; use POSIX; use Data::Dumper; use Getopt::Long qw(:config posix_default gnu_compat bundling); +use Dpkg::Version; our ($opt_force); @@ -342,7 +343,7 @@ sub classify ($) { my $t = $r->{Tree}; foreach my $p (@p) { - $p->{Differs} => (get_differs $p->{CommitId}, $t), + $p->{Differs} = (get_differs $p->{CommitId}, $t), } printdebug "classify $objid \$t=$t \@p", @@ -373,7 +374,7 @@ sub classify ($) { } elsif ($d & (D_PAT_ADD|D_PAT_OTH)) { return $unknown->("edits debian/patches"); } elsif ($d & DS_DEB and !($d & ~DS_DEB)) { - my ($ty,$dummy) = git_cat_file "$ph[0]:debian"; + my ($ty,$dummy) = git_cat_file "$p[0]{CommitId}:debian"; if ($ty eq 'tree') { if ($d == D_DEB_CLOG) { return $classify->(qw(Changelog)); @@ -787,7 +788,7 @@ sub cmd_new_upstream_v0 () { my %pieces; # parse args - low commitment - my $new_version = (new Dpkg::Version scalar(shift @ARGV), 1); + my $new_version = (new Dpkg::Version scalar(shift @ARGV), check => 1); my $new_upstream_version = $new_version->version(); my $new_upstream = git_rev_parse shift @ARGV; @@ -804,14 +805,14 @@ sub cmd_new_upstream_v0 () { my @newpieces; my $newpiece = sub { my ($n, @x) = @_; # may be '' - $pc = $piece->($n, @x, NewIx => (scalar @newpieces)); + my $pc = $piece->($n, @x, NewIx => (scalar @newpieces)); push @newpieces, $pc; }; $newpiece->('', OldIx => 0, New => $new_upstream, - }; + ); while (@ARGV) { my $n = shift @ARGV; my $c = git_rev_parse shift @ARGV; @@ -825,7 +826,7 @@ sub cmd_new_upstream_v0 () { my ($old_laundered_tip,$old_bw) = walk $old_head; my $old_bw_cl = classify $old_bw; - my $old_ups = parsecommit $old_bw_cl->{OrigParents}[0]{CommitId}; + my $old_upstream = parsecommit $old_bw_cl->{OrigParents}[0]{CommitId}; my $problems = 0; my $problem = sub { @@ -834,20 +835,20 @@ sub cmd_new_upstream_v0 () { print STDERR "preflight check failed: $msg\n"; }; - $piece->('', Old => $old_orig); + $piece->('', Old => $old_upstream); - if ($old_orig_ci =~ m{^\[git-debrebase }m) { - if ($old_orig_ci =~ + if ($old_upstream->{Msg} =~ m{^\[git-debrebase }m) { + if ($old_upstream->{Msg} =~ m{^\[git-debrebase new-upstream combine \.((?: $extra_orig_namepart_re)+)\]} ) { my @oldpieces = ('', split / /, $1); - my $parentix = -1 + scalar @{ $old_orig->{Parents} }; - foreach my $i (0..$#$oldpieces) { + my $parentix = -1 + scalar @{ $old_upstream->{Parents} }; + foreach my $i (0..$#oldpieces) { my $n = $oldpieces[$i]; - $piece->($n, Old => $old_orig.'^'.$parentix); + $piece->($n, Old => $old_upstream->{CommitId}.'^'.$parentix); } } else { - $problem->("previous upstream $old_orig->{CommitId} is from". + $problem->("previous upstream $old_upstream->{CommitId} is from". " git-debrebase but not a \`new-upstream combine' commit"); } } @@ -874,17 +875,19 @@ sub cmd_new_upstream_v0 () { } } + my $new_bw; + fresh_workarea(); in_workarea sub { my @upstream_merge_parents; if (!$problems) { - push @upstream_merge_parents, $old_orig->{CommitId}; + push @upstream_merge_parents, $old_upstream->{CommitId}; } foreach my $pc (@newpieces) { # always has '' first if ($pc->{Name}) { - read_tree_subdir $pcname, $pc->{New]; + read_tree_subdir $pc->{Name}, $pc->{New}; } else { runcmd @git, qw(read-tree), $pc->{New}; } @@ -920,7 +923,7 @@ sub cmd_new_upstream_v0 () { push @cmd, qw(-m), "Update to upstream $new_upstream_version"; push @cmd, qw(-m), "[git-debrebase new-upstream breakwater $new_upstream_version]"; - my $new_bw = cmdoutput @git; + $new_bw = cmdoutput @git; # Now we have to add a changelog stanza so the Debian version # is right. @@ -933,7 +936,7 @@ sub cmd_new_upstream_v0 () { $oldclog =~ m/^($package_re) \(\S+\) / or fail "cannot parse old changelog to get package name"; my $p = $1; - print CN, <