From: Han-Wen Nienhuys via GitGitGadget Date: Tue, 07 Sep 2021 13:36:41 GMT Subject: [PATCH v3 0/7] Gets rid of "if reflog exists, append to it regardless of config settings" Message-ID: In-Reply-To: 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 ## 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 + . Signed-off-by: Han-Wen Nienhuys -: ----------- > 7: 1124dbad594 refs: change log_ref_setup calling convention -- gitgitgadget