Am 05.10.21 um 23:38 schrieb Ævar Arnfjörð Bjarmason: > > On Mon, Oct 04 2021, Derrick Stolee wrote: > >> On 10/2/2021 1:37 PM, René Scharfe wrote: >>> p2000 fails for me and reports: >>> >>> perf 18 - git checkout -f - (full-v3): >>> running: >>> ( >>> cd full-v3 && >>> echo >>f2/f4/a && >>> git checkout -f - >>> ) >>> >>> error: pathspec '-' did not match any file(s) known to git >>> >>> checkout fails because the reflog is empty, so the "-" can't be >>> resolved. The pathspec error message is confusing, though. >>> >>> The patch below adds a reflog entry and allows the script to >>> succeed. >>> >>> Before the "test_perf_on_all git commit -a -m A", there are two >>> reflog entries in each of the five clones, after it there are >>> none. How is that even possible? >> >> That is certainly confusing. Is there something about your global >> (or local to your test repo) GC settings that cause an auto-GC to >> prune the reflog aggressively? > > Perhaps something to do with certain parts of the code doing a > time(NULL), and other parts faking up times to be 2005-something? > > I have some WIP patches that run concurrent "git gc --auto" with a > detach across the whole test suite, and IIRC I had to search/replace all > time(NULL) with my own time() that faked up (looks it up) an epoch of > 1113465166 to avoid this exact issue. > > If you try doing that across our tests I think you'll find that the > @{-1} syntax (reflog-powered) will start failing. > > But that's from vague memory, but perhaps it'll point you in the right > direction... Yes, that helped. The reflog entries have fake dates in 2005, and "git reflog expire --all" called by "git gc --auto" deletes entries older than 90 days based on the actual current time. René