Browse Source

refs: move the logic to add \t to reflog to the files backend

523fa69c (reflog: cleanse messages in the refs.c layer, 2020-07-10)
centralized reflog normalizaton.  However, the normalizaton added a
leading "\t" to the message. This is an artifact of the reflog
storage format in the files backend, so it should be added there.

Routines that parse back the reflog (such as grab_nth_branch_switch)
expect the "\t" to not be in the message, so without this fix, git
with reftable cannot process the "@{-1}" syntax.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Han-Wen Nienhuys 4 years ago committed by Junio C Hamano
parent
commit
25429fed5c
  1. 1
      refs.c
  2. 4
      refs/files-backend.c

1
refs.c

@ -875,7 +875,6 @@ static void copy_reflog_msg(struct strbuf *sb, const char *msg) @@ -875,7 +875,6 @@ static void copy_reflog_msg(struct strbuf *sb, const char *msg)
char c;
int wasspace = 1;

strbuf_addch(sb, '\t');
while ((c = *msg++)) {
if (wasspace && isspace(c))
continue;

4
refs/files-backend.c

@ -1628,8 +1628,10 @@ static int log_ref_write_fd(int fd, const struct object_id *old_oid, @@ -1628,8 +1628,10 @@ static int log_ref_write_fd(int fd, const struct object_id *old_oid,
int ret = 0;

strbuf_addf(&sb, "%s %s %s", oid_to_hex(old_oid), oid_to_hex(new_oid), committer);
if (msg && *msg)
if (msg && *msg) {
strbuf_addch(&sb, '\t');
strbuf_addstr(&sb, msg);
}
strbuf_addch(&sb, '\n');
if (write_in_full(fd, sb.buf, sb.len) < 0)
ret = -1;

Loading…
Cancel
Save