From: "Han-Wen Nienhuys via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Taylor Blau" <me@ttaylorr.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Han-Wen Nienhuys" <hanwenn@gmail.com>
Subject: [PATCH v3 0/7] Gets rid of "if reflog exists, append to it regardless of config settings"
Date: Tue, 07 Sep 2021 13:36:41 +0000 [thread overview]
Message-ID: <pull.1067.v3.git.git.1631021808.gitgitgadget@gmail.com> (raw)
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
next prev parent reply other threads:[~2021-09-07 13:37 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-30 14:48 [PATCH 0/4] Gets rid of "if reflog exists, append to it regardless of config settings" Han-Wen Nienhuys via GitGitGadget
2021-08-30 14:48 ` [PATCH 1/4] test-ref-store: tweaks to for-each-reflog-ent format Han-Wen Nienhuys via GitGitGadget
2021-08-30 19:57 ` Taylor Blau
2021-08-30 20:23 ` Taylor Blau
2021-08-30 20:51 ` Junio C Hamano
2021-08-30 20:58 ` Taylor Blau
2021-08-30 21:59 ` Junio C Hamano
2021-08-30 14:48 ` [PATCH 2/4] t1400: use test-helper ref-store to inspect reflog contents Han-Wen Nienhuys via GitGitGadget
2021-08-30 20:55 ` Junio C Hamano
2021-08-30 14:48 ` [PATCH 3/4] refs: drop force_create argument of create_reflog API Han-Wen Nienhuys via GitGitGadget
2021-08-30 21:03 ` Junio C Hamano
2021-08-30 14:48 ` [PATCH 4/4] RFC: refs: reflog entries aren't written based on reflog existence Han-Wen Nienhuys via GitGitGadget
2021-08-30 21:10 ` Taylor Blau
2021-08-30 21:14 ` Junio C Hamano
2021-09-06 16:52 ` [PATCH v2 0/5] Gets rid of "if reflog exists, append to it regardless of config settings" Han-Wen Nienhuys via GitGitGadget
2021-09-06 16:52 ` [PATCH v2 1/5] refs: trim newline from reflog message Han-Wen Nienhuys via GitGitGadget
2021-09-06 22:38 ` Ævar Arnfjörð Bjarmason
2021-09-06 16:52 ` [PATCH v2 2/5] test-ref-store: tweaks to for-each-reflog-ent format Han-Wen Nienhuys via GitGitGadget
2021-09-06 22:34 ` Ævar Arnfjörð Bjarmason
2021-09-07 13:33 ` Han-Wen Nienhuys
2021-09-07 15:53 ` Ævar Arnfjörð Bjarmason
2021-09-06 16:52 ` [PATCH v2 3/5] t1400: use test-helper ref-store to inspect reflog contents Han-Wen Nienhuys via GitGitGadget
2021-09-06 16:52 ` [PATCH v2 4/5] refs: drop force_create argument of create_reflog API Han-Wen Nienhuys via GitGitGadget
2021-09-06 22:42 ` Ævar Arnfjörð Bjarmason
2021-09-06 16:52 ` [PATCH v2 5/5] RFC: refs: reflog entries aren't written based on reflog existence Han-Wen Nienhuys via GitGitGadget
2021-09-06 22:50 ` Ævar Arnfjörð Bjarmason
2021-09-07 13:36 ` Han-Wen Nienhuys via GitGitGadget [this message]
2021-09-07 13:36 ` [PATCH v3 1/7] show-branch: show reflog message Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 2/7] refs: trim newline from " Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 3/7] test-ref-store: tweaks to for-each-reflog-ent format Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 4/7] t1400: use test-helper ref-store to inspect reflog contents Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 5/7] refs: drop force_create argument of create_reflog API Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 6/7] RFC: refs: reflog entries aren't written based on reflog existence Han-Wen Nienhuys via GitGitGadget
2021-09-07 13:36 ` [PATCH v3 7/7] refs: change log_ref_setup calling convention Han-Wen Nienhuys via GitGitGadget
2021-10-05 15:54 ` [PATCH v3 0/7] Gets rid of "if reflog exists, append to it regardless of config settings" Han-Wen Nienhuys
2021-10-06 18:20 ` Junio C Hamano
2021-10-06 18:27 ` Junio C Hamano
2021-10-07 17:38 ` Junio C Hamano
2021-11-11 11:46 ` Han-Wen Nienhuys
2021-11-11 14:38 ` Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1067.v3.git.git.1631021808.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=hanwenn@gmail.com \
--cc=me@ttaylorr.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).