- return;
- }
- m/^(\w+)\n$/ or die "$branch $_ ?";
- $onlyreferring = $1;
- printdebug "checktagnoreplay - not FRESHREPO,".
- " checking for overwriting refs/$branch=$onlyreferring\n";
- }
-
- my @problems;
-
- git_for_each_tag_referring($onlyreferring, sub {
- my ($tagobjid,$refobjid,$fullrefname,$tagname) = @_;
- printdebug "checktagnoreplay - overwriting".
- " $fullrefname=$tagobjid->$refobjid\n";
- my $supers = $supersedes{$fullrefname};
- if (!defined $supers) {
- printdebug "checktagnoreply - fallbacks\n";
- my $super_fallback = 0;
- foreach my $didsuper (sort keys %supersedes) {
- my $didsuper_tagobjid = $supersedes{$didsuper};
- my $didsuper_refobjid = git_rev_parse $didsuper_tagobjid;
- printdebug "checktagnoreply - fallback".
- " $didsuper=$didsuper_refobjid->$didsuper_tagobjid\n";
- last if
- $refobjid ne $didsuper_refobjid
- and is_fast_fwd($refobjid, $didsuper_refobjid);
- printdebug "checktagnoreply - fallback $didsuper OK\n";
- $super_fallback = 1;
- }
- push @problems, "does not supersede $fullrefname"
- unless $super_fallback;
- } elsif ($supers ne $tagobjid) {
- push @problems,
- "supersedes $fullrefname=$supers but previously $fullrefname=$tagobjid";