chiark / gitweb /
dgit: Break out `infopair' functions
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 22 Sep 2016 11:46:23 +0000 (12:46 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 Sep 2016 00:16:59 +0000 (01:16 +0100)
We are going to want to reuse these in a moment.

No functional change other than to debug output.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index 451985db3859a10dfc36912d30d9c4192b673659..cb6a17787a3152ec3326ab32c81bffb667949de0 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -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;