Patrick Steinhardt <ps@xxxxxx> writes: > Fix this by pulling up creation of the reference transaction such that > we can pass the same transaction to both the code which updates local > references and to the code which backfills tags. This allows us to only > commit the transaction in case both actions succeed. OK, having done the FETCH_HEAD thing, the idea is quite similar. Instead of letting two invocations to store_updated_refs() to independently open and close separate transactions, we control everything centrally in do_fetch(). Makes sense. > @@ -197,12 +194,10 @@ test_expect_success 'atomic fetch with backfill should use single transaction' ' > prepared > $ZERO_OID $B refs/heads/something > $ZERO_OID $S refs/tags/tag2 > + $ZERO_OID $T refs/tags/tag1 > committed > $ZERO_OID $B refs/heads/something > $ZERO_OID $S refs/tags/tag2 > - prepared > - $ZERO_OID $T refs/tags/tag1 > - committed > $ZERO_OID $T refs/tags/tag1 > EOF OK. Unlike the "expect the behaviour at the end of the series from the beginning with known-to-fail tests" pattern I cautioned against in an earlier step, this is a good way to show how the behaviour changes. Thanks.