git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 13/18] t2017: mark --orphan/logAllRefUpdates=false test as REFFILES

From
Han-Wen Nienhuys <hanwen@google.com>
Date
Apr 29, 2021, 18:14 UTC
Message-ID
<CAFQ2z_Mdv=vZa5yzBjGyG_o4poNeSJsfa7-KwpVH559cWqM9Qg@mail.gmail.com>
In-Reply-To
<87pmyo3zvw.fsf@evledraar.gmail.com>

On Wed, Apr 21, 2021 at 8:39 AM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:

Show 10 quoted lines
> > In reftable, there is no notion of a per-ref 'existence' of a reflog. Each
> > reflog entry has its own key, so it is not possible to distinguish between
> > {reflog doesn't exist,reflog exists but is empty}. This makes the logic
> > in log_ref_setup() (file refs/files-backend.c), which depends on the existence
> > of the reflog file infeasible.
>
> Okey, so I'd follow this if the test was doing something like "test -e
> .git/logs" to test whether we didn't have reflogs for a specific branch
> or something....
>
..
Show 6 quoted lines
> In your v7[1] of the reftable series there's no patch to
> Documentation/revisions.txt altering that blurb.
>
> So it seems to me that between this & that series there's some closing
> of the gap needed with how this "must have an existing log" even works
> under reftable.

the problem is that it's using BRANCH@{0} as a way to indicate whether the reflog exists or not, and something looks at the current tip of BRANCH for @{0} even if the reflog is empty:

hanwen@hanwen1:~/vc/git$ ls -l .git/logs/refs/heads/windows-2 -rw-r----- 1 hanwen primarygroup 0 Apr 29 20:08 .git/logs/refs/heads/windows-2 hanwen@hanwen1:~/vc/git$ git rev-parse windows-2@{0} 7048e02d79350e332f34f2bfae50eb28700cbeda hanwen@hanwen1:~/vc/git$ rm .git/logs/refs/heads/windows-2 hanwen@hanwen1:~/vc/git$ git rev-parse windows-2@{0} windows-2@{0} fatal: ambiguous argument 'windows-2@{0}': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'

in reftable, with the current implementation, all reflogs are assumed to exist (but possibly empty).

> Per [2] I had assumed that this worked under reftable by abstracting
> away the syntax to some query for the ref name, and faking up "file does
> not exist" as "there were no records" to anything like rev-parse, but it
> doesn't work like that?

you could make it work like that, but I bet that then there are a host of other tests that fail because they might check that a reflog exists (but is empty) after doing eg. "git reflog expire --all".

-- 
Han-Wen Nienhuys - Google Munich
I work 80%. Don't expect answers from me on Fridays.
--

Google Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich

Registergericht und -nummer: Hamburg, HRB 86891

Sitz der Gesellschaft: Hamburg

Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Previous: Ævar Arnfjörð BjarmasonNext: Han-Wen Nienhuys via GitGitGadget
Message 43 of 138 in “Prepare tests for reftable backend”
  1. 00/18 Prepare tests for reftable backendHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  2. 01/18 t4202: split testcase for invalid HEAD symref and HEAD hashHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  3. SZEDER GáborApr 19, 2021
  4. Han-Wen NienhuysApr 27, 2021
  5. 05/18 t1413: use tar to save and restore entire .git directoryHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  6. Junio C HamanoApr 20, 2021
  7. Han-Wen NienhuysApr 27, 2021
  8. 04/18 t1401-symbolic-ref: avoid direct filesystem accessHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  9. SZEDER GáborApr 19, 2021
  10. Han-Wen NienhuysApr 27, 2021
  11. Ævar Arnfjörð BjarmasonApr 21, 2021
  12. Han-Wen NienhuysApr 21, 2021
  13. SZEDER GáborApr 22, 2021
  14. Han-Wen NienhuysApr 22, 2021
  15. SZEDER GáborApr 23, 2021
  16. Han-Wen NienhuysApr 23, 2021
  17. Han-Wen NienhuysApr 23, 2021
  18. Ævar Arnfjörð BjarmasonApr 23, 2021
  19. Han-Wen NienhuysApr 26, 2021
  20. 03/18 t5601: read HEAD using rev-parseHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  21. 06/18 t1301: fix typo in error messageHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  22. 02/18 t9300: check ref existence using git-rev-parse rather than FS checkHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  23. Ævar Arnfjörð BjarmasonApr 21, 2021
  24. Han-Wen NienhuysApr 27, 2021
  25. 07/18 t5000: inspect HEAD using git-rev-parseHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  26. Ævar Arnfjörð BjarmasonApr 21, 2021
  27. Han-Wen NienhuysApr 27, 2021
  28. 09/18 t5304: use "reflog expire --all" to clear the reflogHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  29. Ævar Arnfjörð BjarmasonApr 21, 2021
  30. Han-Wen NienhuysApr 27, 2021
  31. 08/18 t7003: use rev-parse rather than FS inspectionHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  32. 10/18 test-lib: provide test prereq REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  33. Junio C HamanoApr 20, 2021
  34. Junio C HamanoApr 20, 2021
  35. Han-Wen NienhuysApr 26, 2021
  36. Han-Wen NienhuysApr 27, 2021
  37. 12/18 t1414: mark corruption test with REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  38. 11/18 t1407: require REFFILES for for_each_reflog testHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  39. Ævar Arnfjörð BjarmasonApr 21, 2021
  40. Han-Wen NienhuysApr 27, 2021
  41. 13/18 t2017: mark --orphan/logAllRefUpdates=false test as REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  42. Ævar Arnfjörð BjarmasonApr 21, 2021
  43. Han-Wen NienhuysApr 29, 2021
  44. 15/18 t7900: mark pack-refs tests as REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  45. Ævar Arnfjörð BjarmasonApr 21, 2021
  46. Han-Wen NienhuysApr 27, 2021
  47. 16/18 t7003: check reflog existence only for REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  48. Junio C HamanoApr 20, 2021
  49. Han-Wen NienhuysApr 26, 2021
  50. Han-Wen NienhuysApr 27, 2021
  51. Ævar Arnfjörð BjarmasonApr 21, 2021
  52. 14/18 t1404: mark tests that muck with .git directly as REFFILES.Han-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  53. Ævar Arnfjörð BjarmasonApr 21, 2021
  54. Han-Wen NienhuysApr 26, 2021
  55. 17/18 t4202: mark bogus head hash test with REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  56. Ævar Arnfjörð BjarmasonApr 21, 2021
  57. Han-Wen NienhuysApr 26, 2021
  58. 18/18 t1415: set REFFILES for test specific to storage formatHan-Wen Nienhuys via GitGitGadget, Apr 19, 2021
  59. Ævar Arnfjörð BjarmasonApr 21, 2021
  60. Han-Wen NienhuysApr 26, 2021
  61. 00/21 Prepare tests for reftable backendHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  62. 04/21 t5601: read HEAD using rev-parseHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  63. 01/21 t4202: split testcase for invalid HEAD symref and HEAD hashHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  64. Ævar Arnfjörð BjarmasonMay 20, 2021
  65. Han-Wen NienhuysMay 31, 2021
  66. 06/21 t1413: use tar to save and restore entire .git directoryHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  67. Ævar Arnfjörð BjarmasonMay 20, 2021
  68. Han-Wen NienhuysMay 31, 2021
  69. 05/21 t1401-symbolic-ref: avoid direct filesystem accessHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  70. Ævar Arnfjörð BjarmasonMay 20, 2021
  71. Han-Wen NienhuysMay 31, 2021
  72. 02/21 t/helper/ref-store: initialize oid in resolve-refHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  73. Ævar Arnfjörð BjarmasonMay 20, 2021
  74. Han-Wen NienhuysMay 31, 2021
  75. 03/21 t9300: check ref existence using test-helper rather than a file system checkHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  76. Ævar Arnfjörð BjarmasonMay 20, 2021
  77. 08/21 t5000: reformat indentation to the latest fashionHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  78. Ævar Arnfjörð BjarmasonMay 20, 2021
  79. Han-Wen NienhuysMay 31, 2021
  80. 09/21 t5000: inspect HEAD using git-rev-parseHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  81. 07/21 t1301: fix typo in error messageHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  82. 11/21 t5304: restyle: trim empty lines, drop ':' before >Han-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  83. 10/21 t7003: use rev-parse rather than FS inspectionHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  84. 12/21 t5304: use "reflog expire --all" to clear the reflogHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  85. Ævar Arnfjörð BjarmasonMay 20, 2021
  86. Han-Wen NienhuysMay 31, 2021
  87. 18/21 t7900: mark pack-refs tests as REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  88. Ævar Arnfjörð BjarmasonMay 20, 2021
  89. Han-Wen NienhuysMay 31, 2021
  90. 14/21 t1407: require REFFILES for for_each_reflog testHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  91. 13/21 test-lib: provide test prereq REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  92. 15/21 t1414: mark corruption test with REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  93. Ævar Arnfjörð BjarmasonMay 20, 2021
  94. 19/21 t7003: check reflog existence only for REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  95. Ævar Arnfjörð BjarmasonMay 20, 2021
  96. Han-Wen NienhuysMay 31, 2021
  97. 16/21 t2017: mark --orphan/logAllRefUpdates=false test as REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  98. Ævar Arnfjörð BjarmasonMay 20, 2021
  99. 17/21 t1404: mark tests that muck with .git directly as REFFILES.Han-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  100. 21/21 t1415: set REFFILES for test specific to storage formatHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  101. Ævar Arnfjörð BjarmasonMay 20, 2021
  102. Han-Wen NienhuysMay 31, 2021
  103. Ævar Arnfjörð BjarmasonMay 31, 2021
  104. 20/21 t4202: mark bogus head hash test with REFFILESHan-Wen Nienhuys via GitGitGadget, Apr 27, 2021
  105. Ævar Arnfjörð BjarmasonMay 20, 2021
  106. Han-Wen NienhuysMay 31, 2021
  107. Ævar Arnfjörð BjarmasonMay 20, 2021
  108. Han-Wen NienhuysMay 26, 2021
  109. Ævar Arnfjörð BjarmasonMay 26, 2021
  110. Han-Wen NienhuysMay 31, 2021
  111. 00/22 Prepare tests for reftable backendHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  112. 02/22 t/helper/ref-store: initialize oid in resolve-refHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  113. 01/22 t4202: split testcase for invalid HEAD symref and HEAD hashHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  114. 04/22 t5601: read HEAD using rev-parseHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  115. 03/22 t9300: check ref existence using test-helper rather than a file system checkHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  116. 05/22 t1401: use tar to snapshot and restore repo stateHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  117. 07/22 t1413: use tar to save and restore entire .git directoryHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  118. Bagas SanjayaJun 1, 2021
  119. Han-Wen NienhuysJun 1, 2021
  120. Junio C HamanoJun 1, 2021
  121. Han-Wen NienhuysJun 2, 2021
  122. 06/22 t1401-symbolic-ref: avoid direct filesystem accessHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  123. 08/22 t1301: fix typo in error messageHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  124. 09/22 t5000: reformat indentation to the latest fashionHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  125. 10/22 t5000: inspect HEAD using git-rev-parseHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  126. 11/22 t7003: use rev-parse rather than FS inspectionHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  127. 12/22 t5304: restyle: trim empty lines, drop ':' before >Han-Wen Nienhuys via GitGitGadget, May 31, 2021
  128. 15/22 t1407: require REFFILES for for_each_reflog testHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  129. 17/22 t2017: mark --orphan/logAllRefUpdates=false test as REFFILESHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  130. 14/22 test-lib: provide test prereq REFFILESHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  131. 18/22 t1404: mark tests that muck with .git directly as REFFILES.Han-Wen Nienhuys via GitGitGadget, May 31, 2021
  132. 16/22 t1414: mark corruption test with REFFILESHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  133. 21/22 t4202: mark bogus head hash test with REFFILESHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  134. 13/22 t5304: use "reflog expire --all" to clear the reflogHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  135. 19/22 t7900: stop checking for loose refsHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  136. 20/22 t7003: check reflog existence only for REFFILESHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  137. 22/22 t1415: set REFFILES for test specific to storage formatHan-Wen Nienhuys via GitGitGadget, May 31, 2021
  138. Ævar Arnfjörð BjarmasonMay 31, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.