Re: [PATCH 2/4] refs: trim newline from reflog message
- From
Han-Wen Nienhuys <hanwen@google.com>
- Date
- Nov 24, 2021, 11:17 UTC
- Message-ID
- <CAFQ2z_Mb+NzQfXfMhdQoPs09p2j1AWRAdXcX3JSznn+H9+T0Bw@mail.gmail.com>
- In-Reply-To
- <xmqqzgpu7grv.fsf@gitster.g>
On Tue, Nov 23, 2021 at 9:34 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> > Han-Wen Nienhuys <hanwen@google.com> writes: > > > I'm talking about refs/refs-internal.h. It seems you want to add something like > > > > /* The ref backend should add a '\n' relative to the message supplied > > to the delete/symref/update functions. */ > > typedef int for_each_reflog_ent_fn(struct ref_store *ref_store, > > const char *refname, > > each_reflog_ent_fn fn, > > void *cb_data); > > > > ? > > Sorry, I do not follow. Doesn't the ref backend already ensure that > the message is not an incomplete line? If you feed a single > complete line when updating, I do not think the backend should add > any extra LF relative to the given message:
But it does, currently. As of
commit 523fa69c36744ae6779e38614cb9bfb2be552923
Author: Junio C Hamano <gitster@pobox.com>
..
- We expect that a reflog message consists of a single line. The
file format used by the files backend may add a LF after theit is the job of the files ref backend to add a LF, and the input to the ref backend is a string without trailing LF. But the files backend then produces that message with a LF, when reading back the data, eg.
$ git --version git version 2.34.0.rc2.393.gf8c9666880-goog
$ GIT_TRACE_REFS="1" git branch -m bla blub .. 12:03:59.408705 refs/debug.c:162 rename_ref: refs/heads/bla -> refs/heads/blub "Branch: renamed refs/heads/bla to refs/heads/blub": 0
$ GIT_TRACE_REFS=1 git reflog show refs/heads/blub 12:04:23.277805 refs/debug.c:294 reflog_ent refs/heads/blub (ret 0): cd3e606211bb1cf8bc57f7d76bab98cc17a150bc -> cd3e606211bb1cf8bc57f7d76bab98cc17a150bc, Han-Wen Nienhuys <hanwen@google.com> 1637751839 "Branch: renamed refs/heads/bla to refs/heads/blub "
Show 6 quoted lines
> I think the rule for "msg" is that: > > a multi-line message, or a message on a single incomplete-line, > are normalized into a single complete line, and callback gets a > single complete line. >
That is not how it works today. The files backend verbatimly dumps the message supplied to it. (Maybe it should crash if there is a '\n' in the message).
-- 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