diff options
Diffstat (limited to 'dgit')
-rwxr-xr-x | dgit | 71 |
1 files changed, 36 insertions, 35 deletions
@@ -2356,6 +2356,35 @@ sub madformat ($) { return 1; } +# An "infopair" is a tuple [ $thing, $what ] +# (often $thing is a commit hash; $what is a description) + +sub infopair_cond_equal ($$) { + my ($x,$y) = @_; + $x->[0] eq $y->[0] or fail <<END; +$x->[1] ($x->[0]) not equal to $y->[1] ($y->[0]) +END +}; + +sub infopair_lrf_tag_lookup ($$) { + my ($tagname, $what) = @_; + printdebug "infopair_lrfetchref_tag_lookup $what\n"; + my $lrefname = lrfetchrefs."/tags/$tagname"; + my $tagobj = $lrfetchrefs_f{$lrefname}; + defined $tagobj or fail <<END; +Wanted tag $tagname ($what) on dgit server, but not found +END + printdebug "infopair_lrfetchref_tag_lookup $tagobj $what\n"; + return [ git_rev_parse($tagobj), $what ]; +} + +sub infopair_cond_ff ($$) { + my ($anc,$desc) = @_; + is_fast_fwd($anc->[0], $desc->[0]) or fail <<END; +$anc->[1] ($anc->[0]) .. $desc->[1] ($desc->[0]) is not fast forward +END +}; + sub splitbrain_pseudomerge ($$$$) { my ($clogp, $maintview, $dgitview, $archive_hash) = @_; # => $merged_dgitview @@ -2372,34 +2401,6 @@ sub splitbrain_pseudomerge ($$$$) { # this: $dgitview' # - # We work with tuples [ $thing, $what ] - # (often $thing is a commit hash; $what is a description) - - my $tag_lookup = sub { - my ($tagname, $what) = @_; - printdebug "splitbrain_pseudomerge tag_lookup $what\n"; - my $lrefname = lrfetchrefs."/tags/$tagname"; - my $tagobj = $lrfetchrefs_f{$lrefname}; - defined $tagobj or fail <<END; -Wanted tag $tagname ($what) on dgit server, but not found -END - printdebug "splitbrain_pseudomerge tag_lookup $tagobj $what\n"; - return [ git_rev_parse($tagobj), $what ]; - }; - - my $cond_equal = sub { - my ($x,$y) = @_; - $x->[0] eq $y->[0] or fail <<END; -$x->[1] ($x->[0]) not equal to $y->[1] ($y->[0]) -END - }; - my $cond_ff = sub { - my ($anc,$desc) = @_; - is_fast_fwd($anc->[0], $desc->[0]) or fail <<END; -$anc->[1] ($anc->[0]) .. $desc->[1] ($desc->[0]) is not fast forward -END - }; - my $arch_clogp = commit_getclogp $archive_hash; my $i_arch_v = [ (getfield $arch_clogp, 'Version'), 'version currently in archive' ]; @@ -2411,8 +2412,8 @@ END if (defined $overwrite_version) { progress "Declaring that HEAD inciudes all changes in archive..."; progress "Checking that $overwrite_version does so..."; - $cond_equal->([ $overwrite_version, '--overwrite= version' ], - $i_arch_v); + infopair_cond_equal([ $overwrite_version, '--overwrite= version' ], + $i_arch_v); } else { progress "Checking that HEAD inciudes all changes in archive..."; } @@ -2420,16 +2421,16 @@ END return $dgitview if is_fast_fwd $archive_hash, $dgitview; my $t_dep14 = debiantag_maintview $i_arch_v->[0], access_basedistro; - my $i_dep14 = $tag_lookup->($t_dep14, "maintainer view tag"); + my $i_dep14 = infopair_lrf_tag_lookup($t_dep14, "maintainer view tag"); my $t_dgit = debiantag_new $i_arch_v->[0], access_basedistro; - my $i_dgit = $tag_lookup->($t_dgit, "dgit view tag"); + my $i_dgit = infopair_lrf_tag_lookup($t_dgit, "dgit view tag"); my $i_archive = [ $archive_hash, "current archive contents" ]; printdebug "splitbrain_pseudomerge i_archive @$i_archive\n"; - $cond_equal->($i_dgit, $i_archive); - $cond_ff->($i_dep14, $i_dgit); - $overwrite_version // $cond_ff->($i_dep14, [ $maintview, 'HEAD' ]); + infopair_cond_equal($i_dgit, $i_archive); + infopair_cond_ff($i_dep14, $i_dgit); + $overwrite_version // infopair_cond_ff($i_dep14, [ $maintview, 'HEAD' ]); my $tree = cmdoutput qw(git rev-parse), "${dgitview}:"; my $authline = clogp_authline $clogp; |