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

[PATCH v3 0/7] Gets rid of "if reflog exists, append to it regardless of config settings"

From
Han-Wen Nienhuys via GitGitGadget <gitgitgadget@gmail.com>
Date
Sep 7, 2021, 13:36 UTC
Message-ID
<pull.1067.v3.git.git.1631021808.gitgitgadget@gmail.com>
In-Reply-To
<pull.1067.v2.git.git.1630947142.gitgitgadget@gmail.com>

<As discussed in CAFQ2z_Ps3YxycA+NJ9VKt_PEXb+m83JdNB7ujzWw1fTPKyZ=fg@mail.gmail.com

v3:
 * fix show-branch
 * add some more context to commit messages
 * change calling convention for log_ref_setup; could fold into predecessor
   if needed too.
Han-Wen Nienhuys (7):
  show-branch: show reflog message
  refs: trim newline from reflog message
  test-ref-store: tweaks to for-each-reflog-ent format
  t1400: use test-helper ref-store to inspect reflog contents
  refs: drop force_create argument of create_reflog API
  RFC: refs: reflog entries aren't written based on reflog existence.
  refs: change log_ref_setup calling convention
 builtin/checkout.c             |   2 +-
 builtin/show-branch.c          |   7 +-
 reflog-walk.c                  |   6 +-
 refs.c                         |   9 ++-
 refs.h                         |   4 +-
 refs/debug.c                   |   5 +-
 refs/files-backend.c           | 128 +++++++++++++--------------------
 refs/packed-backend.c          |   3 +-
 refs/refs-internal.h           |   2 +-
 t/helper/test-ref-store.c      |   8 +--
 t/t1400-update-ref.sh          |  21 +++---
 t/t1405-main-ref-store.sh      |   6 +-
 t/t1406-submodule-ref-store.sh |   6 +-
 t/t3202-show-branch.sh         |  15 ++++
 14 files changed, 101 insertions(+), 121 deletions(-)
base-commit: e0a2f5cbc585657e757385ad918f167f519cfb96
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1067%2Fhanwen%2Freflog-touch-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1067/hanwen/reflog-touch-v3
Pull-Request: https://github.com/git/git/pull/1067
Range-diff vs v2:
 -:  ----------- > 1:  e158882812f show-branch: show reflog message
 1:  995d450da42 ! 2:  d16d94164c1 refs: trim newline from reflog message
     @@ Commit message
      
       ## builtin/show-branch.c ##
      @@ builtin/show-branch.c: int cmd_show_branch(int ac, const char **av, const char *prefix)
     - 				show_one_commit(rev[i], 1);
     + 			char *logmsg;
     + 			char *nth_desc;
     + 			const char *msg;
     +-			char *end;
     + 			timestamp_t timestamp;
     + 			int tz;
     + 
     +@@ builtin/show-branch.c: int cmd_show_branch(int ac, const char **av, const char *prefix)
     + 				break;
       			}
     - 			else
     --				puts(reflog_msg[i]);
     -+				puts(reflog_msg[i]); /* XXX - this puts a
     -+							newline. Did we put two
     -+							newlines beforehand? */
       
     - 			if (is_head)
     - 				head_at = i;
     +-			end = strchr(logmsg, '\n');
     +-			if (end)
     +-				*end = '\0';
     +-
     + 			msg = (*logmsg == '\0') ? "(none)" : logmsg;
     + 			reflog_msg[i] = xstrfmt("(%s) %s",
     + 						show_date(timestamp, tz,
      
       ## reflog-walk.c ##
      @@ reflog-walk.c: void get_reflog_message(struct strbuf *sb,
 2:  11b296a55e9 = 3:  e273963216c test-ref-store: tweaks to for-each-reflog-ent format
 3:  9ec09cc64cd = 4:  52093fce57c t1400: use test-helper ref-store to inspect reflog contents
 4:  aa25fd9b7de ! 5:  ce0047028dd refs: drop force_create argument of create_reflog API
     @@ Commit message
          There is only one caller, builtin/checkout.c, and it hardcodes
          force_create=1.
      
     +    This argument was introduced in abd0cd3a301 (refs: new public ref function:
     +    safe_create_reflog, 2015-07-21), which promised to immediately use it in a
     +    follow-on commit, but that never happened.
     +
          Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
      
       ## builtin/checkout.c ##
     @@ refs/files-backend.c: error:
       	int fd;
       
      -	if (log_ref_setup(refs, refname, force_create, &fd, err))
     -+	if (log_ref_setup(refs, refname, /*force_create=*/1, &fd, err))
     ++	if (log_ref_setup(refs, refname, 1, &fd, err))
       		return -1;
       
       	if (fd >= 0)
 5:  f6a7c5ad56e ! 6:  7a030cfd3e2 RFC: refs: reflog entries aren't written based on reflog existence.
     @@ Commit message
          The reftable storage backend cannot distinguish between a non-existing
          reflog, and an empty one. Therefore it cannot mimick this functionality.
      
     -    In CAFQ2z_Ps3YxycA+NJ9VKt_PEXb+m83JdNB7ujzWw1fTPKyZ=fg@mail.gmail.com,
     -    we came to the conclusion that this feature is probably a remnant from
     -    the time that reflogs weren't enabled by default, and it does not need
     -    to be kept.
     +    With this feature, it is possible to mark only specific branches as subject to
     +    reflog updates. When introduced, it presumably served as a cheap substitute for
     +    introducing branch.$NAME.logRefUpdate configuration setting.
     +
     +    Reflogs are small and don't impact the runtime of normal operations, so this
     +    flexibility is not very useful. Since it incurs complexity for alternate ref
     +    backends, we remove it.
     +
     +    Further background to this change is in
     +    <CAFQ2z_Ps3YxycA+NJ9VKt_PEXb+m83JdNB7ujzWw1fTPKyZ=fg@mail.gmail.com>.
      
          Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
      
 -:  ----------- > 7:  1124dbad594 refs: change log_ref_setup calling convention
-- 
gitgitgadget
Previous: Ævar Arnfjörð BjarmasonNext: Han-Wen Nienhuys via GitGitGadget
Message 27 of 40 in “Gets rid of "if reflog exists, append to it regardless of config settings"”
  1. 0/4 Gets rid of "if reflog exists, append to it regardless of config settings"Han-Wen Nienhuys via GitGitGadget, Aug 30, 2021
  2. 1/4 test-ref-store: tweaks to for-each-reflog-ent formatHan-Wen Nienhuys via GitGitGadget, Aug 30, 2021
  3. Taylor BlauAug 30, 2021
  4. Taylor BlauAug 30, 2021
  5. Junio C HamanoAug 30, 2021
  6. Taylor BlauAug 30, 2021
  7. Junio C HamanoAug 30, 2021
  8. 2/4 t1400: use test-helper ref-store to inspect reflog contentsHan-Wen Nienhuys via GitGitGadget, Aug 30, 2021
  9. Junio C HamanoAug 30, 2021
  10. 3/4 refs: drop force_create argument of create_reflog APIHan-Wen Nienhuys via GitGitGadget, Aug 30, 2021
  11. Junio C HamanoAug 30, 2021
  12. 4/4 RFC: refs: reflog entries aren't written based on reflog existence.Han-Wen Nienhuys via GitGitGadget, Aug 30, 2021
  13. Taylor BlauAug 30, 2021
  14. Junio C HamanoAug 30, 2021
  15. 0/5 Gets rid of "if reflog exists, append to it regardless of config settings"Han-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  16. 1/5 refs: trim newline from reflog messageHan-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  17. Ævar Arnfjörð BjarmasonSep 6, 2021
  18. 2/5 test-ref-store: tweaks to for-each-reflog-ent formatHan-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  19. Ævar Arnfjörð BjarmasonSep 6, 2021
  20. Han-Wen NienhuysSep 7, 2021
  21. Ævar Arnfjörð BjarmasonSep 7, 2021
  22. 3/5 t1400: use test-helper ref-store to inspect reflog contentsHan-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  23. 4/5 refs: drop force_create argument of create_reflog APIHan-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  24. Ævar Arnfjörð BjarmasonSep 6, 2021
  25. 5/5 RFC: refs: reflog entries aren't written based on reflog existence.Han-Wen Nienhuys via GitGitGadget, Sep 6, 2021
  26. Ævar Arnfjörð BjarmasonSep 6, 2021
  27. 0/7 Gets rid of "if reflog exists, append to it regardless of config settings"Han-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  28. 1/7 show-branch: show reflog messageHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  29. 5/7 refs: drop force_create argument of create_reflog APIHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  30. 2/7 refs: trim newline from reflog messageHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  31. 3/7 test-ref-store: tweaks to for-each-reflog-ent formatHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  32. 6/7 RFC: refs: reflog entries aren't written based on reflog existence.Han-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  33. 4/7 t1400: use test-helper ref-store to inspect reflog contentsHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  34. 7/7 refs: change log_ref_setup calling conventionHan-Wen Nienhuys via GitGitGadget, Sep 7, 2021
  35. Han-Wen NienhuysOct 5, 2021
  36. Junio C HamanoOct 6, 2021
  37. Junio C HamanoOct 6, 2021
  38. Junio C HamanoOct 7, 2021
  39. Han-Wen NienhuysNov 11, 2021
  40. Ævar Arnfjörð BjarmasonNov 11, 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.