summaryrefslogtreecommitdiff
path: root/dgit
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-22 12:46:23 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-26 01:16:59 +0100
commit79ba42b874cdff4f0cb2bf188a4c1940fbad3a62 (patch)
tree8e36a6a37da65331cd41df53d71377ea13d2dcdb /dgit
parent6e73b40874dcd924dd1f0091591cbc759070f276 (diff)
dgit: Break out `infopair' functions
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>
Diffstat (limited to 'dgit')
-rwxr-xr-xdgit71
1 files changed, 36 insertions, 35 deletions
diff --git a/dgit b/dgit
index 451985d..cb6a177 100755
--- 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;