<As discussed in CAFQ2z_Ps3YxycA+NJ9VKt_PEXb+m83JdNB7ujzWw1fTPKyZ=fg@xxxxxxxxxxxxxx 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@xxxxxxxxxx> ## 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@xxxxxxxxxxxxxx, - 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@xxxxxxxxxxxxxx>. Signed-off-by: Han-Wen Nienhuys <hanwen@xxxxxxxxxx> -: ----------- > 7: 1124dbad594 refs: change log_ref_setup calling convention -- gitgitgadget