public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Bence Ferdinandy <bence@ferdinandy•com>
To: git@vger•kernel.org
Cc: phillip.wood@dunelm•org.uk, "Taylor Blau" <me@ttaylorr•com>,
	"René Scharfe" <l.s.r@web•de>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx•de>,
	"Junio C Hamano" <gitster@pobox•com>,
	"Bence Ferdinandy" <bence@ferdinandy•com>,
	karthik.188@gmail•com
Subject: [PATCH v8 1/6] refs: atomically record overwritten ref in update_symref
Date: Tue, 15 Oct 2024 00:53:10 +0200	[thread overview]
Message-ID: <20241014225431.1394565-2-bence@ferdinandy.com> (raw)
In-Reply-To: <20241014225431.1394565-1-bence@ferdinandy.com>

When updating a symref it's currently not possible to know for sure what
was the previous value that was overwritten. Record the value after the
ref has been locked if the caller of refs_update_symref requests it via
a new variable in the function call.

Signed-off-by: Bence Ferdinandy <bence@ferdinandy•com>
---

Notes:
    v4: new patch
    
    v5: - added before_target to reftables backend
        - added an extra safety check for transaction's existence in refs.c
    
    v6: - no change
    
    v7: - remove the whole before_target concept from the backends and
          handle checking it in refs.c instead (thanks Karthik)
        - rename the before_target to referent which is how the same concept
          is called in the backends
        - change commit prefix to be more in line with project standards
    
    v8: no change

 builtin/branch.c          |  2 +-
 builtin/checkout.c        |  4 ++--
 builtin/clone.c           |  6 +++---
 builtin/notes.c           |  2 +-
 builtin/remote.c          |  6 +++---
 builtin/symbolic-ref.c    |  2 +-
 builtin/worktree.c        |  2 +-
 refs.c                    | 16 +++++++++++-----
 refs.h                    |  3 ++-
 reset.c                   |  2 +-
 sequencer.c               |  2 +-
 setup.c                   |  2 +-
 t/helper/test-ref-store.c |  2 +-
 13 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index fd1611ebf5..6c87690b58 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -559,7 +559,7 @@ static int replace_each_worktree_head_symref(struct worktree **worktrees,
 			continue;
 
 		refs = get_worktree_ref_store(worktrees[i]);
-		if (refs_update_symref(refs, "HEAD", newref, logmsg))
+		if (refs_update_symref(refs, "HEAD", newref, logmsg, NULL))
 			ret = error(_("HEAD of working tree %s is not updated"),
 				    worktrees[i]->path);
 	}
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 9c30000d3a..356ee9bcde 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1015,7 +1015,7 @@ static void update_refs_for_switch(const struct checkout_opts *opts,
 			describe_detached_head(_("HEAD is now at"), new_branch_info->commit);
 		}
 	} else if (new_branch_info->path) {	/* Switch branches. */
-		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", new_branch_info->path, msg.buf) < 0)
+		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", new_branch_info->path, msg.buf, NULL) < 0)
 			die(_("unable to update HEAD"));
 		if (!opts->quiet) {
 			if (old_branch_info->path && !strcmp(new_branch_info->path, old_branch_info->path)) {
@@ -1479,7 +1479,7 @@ static int switch_unborn_to_new_branch(const struct checkout_opts *opts)
 		die(_("You are on a branch yet to be born"));
 	strbuf_addf(&branch_ref, "refs/heads/%s", opts->new_branch);
 	status = refs_update_symref(get_main_ref_store(the_repository),
-				    "HEAD", branch_ref.buf, "checkout -b");
+				    "HEAD", branch_ref.buf, "checkout -b", NULL);
 	strbuf_release(&branch_ref);
 	if (!opts->quiet)
 		fprintf(stderr, _("Switched to a new branch '%s'\n"),
diff --git a/builtin/clone.c b/builtin/clone.c
index e77339c847..ead2af20ea 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -661,7 +661,7 @@ static void update_remote_refs(const struct ref *refs,
 		strbuf_addstr(&head_ref, "HEAD");
 		if (refs_update_symref(get_main_ref_store(the_repository), head_ref.buf,
 				       remote_head_points_at->peer_ref->name,
-				       msg) < 0)
+				       msg, NULL) < 0)
 			die(_("unable to update %s"), head_ref.buf);
 		strbuf_release(&head_ref);
 	}
@@ -673,7 +673,7 @@ static void update_head(const struct ref *our, const struct ref *remote,
 	const char *head;
 	if (our && skip_prefix(our->name, "refs/heads/", &head)) {
 		/* Local default branch link */
-		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", our->name, NULL) < 0)
+		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", our->name, NULL, NULL) < 0)
 			die(_("unable to update HEAD"));
 		if (!option_bare) {
 			refs_update_ref(get_main_ref_store(the_repository),
@@ -702,7 +702,7 @@ static void update_head(const struct ref *our, const struct ref *remote,
 		 * Unborn head from remote; same as "our" case above except
 		 * that we have no ref to update.
 		 */
-		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", unborn, NULL) < 0)
+		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", unborn, NULL, NULL) < 0)
 			die(_("unable to update HEAD"));
 		if (!option_bare)
 			install_branch_config(0, head, remote_name, unborn);
diff --git a/builtin/notes.c b/builtin/notes.c
index 8c26e45526..ba646f06ff 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -980,7 +980,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 			die(_("a notes merge into %s is already in-progress at %s"),
 			    notes_ref, wt->path);
 		free_worktrees(worktrees);
-		if (refs_update_symref(get_main_ref_store(the_repository), "NOTES_MERGE_REF", notes_ref, NULL))
+		if (refs_update_symref(get_main_ref_store(the_repository), "NOTES_MERGE_REF", notes_ref, NULL, NULL))
 			die(_("failed to store link to current notes ref (%s)"),
 			    notes_ref);
 		fprintf(stderr, _("Automatic notes merge failed. Fix conflicts in %s "
diff --git a/builtin/remote.c b/builtin/remote.c
index 76670ddd8b..d8ff440027 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -244,7 +244,7 @@ static int add(int argc, const char **argv, const char *prefix)
 		strbuf_reset(&buf2);
 		strbuf_addf(&buf2, "refs/remotes/%s/%s", name, master);
 
-		if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, "remote add"))
+		if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, "remote add", NULL))
 			result = error(_("Could not setup master '%s'"), master);
 	}
 
@@ -864,7 +864,7 @@ static int mv(int argc, const char **argv, const char *prefix)
 		strbuf_reset(&buf3);
 		strbuf_addf(&buf3, "remote: renamed %s to %s",
 				item->string, buf.buf);
-		if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, buf3.buf))
+		if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, buf3.buf, NULL))
 			die(_("creating '%s' failed"), buf.buf);
 		display_progress(progress, ++refs_renamed_nr);
 	}
@@ -1444,7 +1444,7 @@ static int set_head(int argc, const char **argv, const char *prefix)
 		/* make sure it's valid */
 		if (!refs_ref_exists(get_main_ref_store(the_repository), buf2.buf))
 			result |= error(_("Not a valid ref: %s"), buf2.buf);
-		else if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, "remote set-head"))
+		else if (refs_update_symref(get_main_ref_store(the_repository), buf.buf, buf2.buf, "remote set-head", NULL))
 			result |= error(_("Could not setup %s"), buf.buf);
 		else if (opt_a)
 			printf("%s/HEAD set to %s\n", argv[0], head_name);
diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c
index 299d23d76a..7728fbc3c1 100644
--- a/builtin/symbolic-ref.c
+++ b/builtin/symbolic-ref.c
@@ -88,7 +88,7 @@ int cmd_symbolic_ref(int argc,
 		if (check_refname_format(argv[1], REFNAME_ALLOW_ONELEVEL) < 0)
 			die("Refusing to set '%s' to invalid ref '%s'", argv[0], argv[1]);
 		ret = !!refs_update_symref(get_main_ref_store(the_repository),
-					   argv[0], argv[1], msg);
+					   argv[0], argv[1], msg, NULL);
 		break;
 	default:
 		usage_with_options(git_symbolic_ref_usage, options);
diff --git a/builtin/worktree.c b/builtin/worktree.c
index fc31d072a6..a7ab4193c1 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -517,7 +517,7 @@ static int add_worktree(const char *path, const char *refname,
 		ret = refs_update_ref(wt_refs, NULL, "HEAD", &commit->object.oid,
 				      NULL, 0, UPDATE_REFS_MSG_ON_ERR);
 	else
-		ret = refs_update_symref(wt_refs, "HEAD", symref.buf, NULL);
+		ret = refs_update_symref(wt_refs, "HEAD", symref.buf, NULL, NULL);
 	if (ret)
 		goto done;
 
diff --git a/refs.c b/refs.c
index 5f729ed412..b964ac44d0 100644
--- a/refs.c
+++ b/refs.c
@@ -2114,7 +2114,8 @@ int peel_iterated_oid(struct repository *r, const struct object_id *base, struct
 }
 
 int refs_update_symref(struct ref_store *refs, const char *ref,
-		       const char *target, const char *logmsg)
+		       const char *target, const char *logmsg,
+		       struct strbuf *referent)
 {
 	struct ref_transaction *transaction;
 	struct strbuf err = STRBUF_INIT;
@@ -2122,17 +2123,23 @@ int refs_update_symref(struct ref_store *refs, const char *ref,
 
 	transaction = ref_store_transaction_begin(refs, &err);
 	if (!transaction ||
-	    ref_transaction_update(transaction, ref, NULL, NULL,
+		ref_transaction_update(transaction, ref, NULL, NULL,
 				   target, NULL, REF_NO_DEREF,
 				   logmsg, &err) ||
-	    ref_transaction_commit(transaction, &err)) {
+		ref_transaction_prepare(transaction, &err)) {
 		ret = error("%s", err.buf);
+		goto cleanup;
 	}
+	if (referent)
+		refs_read_symbolic_ref(refs, ref, referent);
+
+	if (ref_transaction_commit(transaction, &err))
+		ret = error("%s", err.buf);
 
+cleanup:
 	strbuf_release(&err);
 	if (transaction)
 		ref_transaction_free(transaction);
-
 	return ret;
 }
 
@@ -2948,4 +2955,3 @@ int ref_update_expects_existing_old_ref(struct ref_update *update)
 	return (update->flags & REF_HAVE_OLD) &&
 		(!is_null_oid(&update->old_oid) || update->old_target);
 }
-
diff --git a/refs.h b/refs.h
index 108dfc93b3..b09a3a4384 100644
--- a/refs.h
+++ b/refs.h
@@ -571,7 +571,8 @@ int refs_copy_existing_ref(struct ref_store *refs, const char *oldref,
 		    const char *newref, const char *logmsg);
 
 int refs_update_symref(struct ref_store *refs, const char *refname,
-		       const char *target, const char *logmsg);
+		       const char *target, const char *logmsg,
+		       struct strbuf *referent);
 
 enum action_on_err {
 	UPDATE_REFS_MSG_ON_ERR,
diff --git a/reset.c b/reset.c
index b22b1be792..cc36a9ed56 100644
--- a/reset.c
+++ b/reset.c
@@ -76,7 +76,7 @@ static int update_refs(const struct reset_head_opts *opts,
 		if (!ret)
 			ret = refs_update_symref(get_main_ref_store(the_repository),
 						 "HEAD", switch_to_branch,
-						 reflog_head);
+						 reflog_head, NULL);
 	}
 	if (!ret && run_hook)
 		run_hooks_l(the_repository, "post-checkout",
diff --git a/sequencer.c b/sequencer.c
index 8d01cd50ac..23b162924c 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -5107,7 +5107,7 @@ static int pick_commits(struct repository *r,
 			}
 			msg = reflog_message(opts, "finish", "returning to %s",
 				head_ref.buf);
-			if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", head_ref.buf, msg)) {
+			if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", head_ref.buf, msg, NULL)) {
 				res = error(_("could not update HEAD to %s"),
 					head_ref.buf);
 				goto cleanup_head_ref;
diff --git a/setup.c b/setup.c
index 94e79b2e48..d95f051465 100644
--- a/setup.c
+++ b/setup.c
@@ -2275,7 +2275,7 @@ void create_reference_database(enum ref_storage_format ref_storage_format,
 			die(_("invalid initial branch name: '%s'"),
 			    initial_branch);
 
-		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", ref, NULL) < 0)
+		if (refs_update_symref(get_main_ref_store(the_repository), "HEAD", ref, NULL, NULL) < 0)
 			exit(1);
 		free(ref);
 	}
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index 65346dee55..a911302bea 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -120,7 +120,7 @@ static int cmd_create_symref(struct ref_store *refs, const char **argv)
 	const char *target = notnull(*argv++, "target");
 	const char *logmsg = *argv++;
 
-	return refs_update_symref(refs, refname, target, logmsg);
+	return refs_update_symref(refs, refname, target, logmsg, NULL);
 }
 
 static struct flag_definition transaction_flags[] = {
-- 
2.47.0.7.g072c39eddb.dirty


  reply	other threads:[~2024-10-14 22:55 UTC|newest]

Thread overview: 258+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-10 20:37 [RFC PATCH v2 0/2] set remote/HEAD with fetch Bence Ferdinandy
2024-09-10 20:37 ` [RFC PATCH v2 1/2] fetch: set-head with --set-head option Bence Ferdinandy
2024-09-10 22:19   ` Junio C Hamano
2024-09-11 12:13     ` Bence Ferdinandy
2024-09-11 15:52       ` Junio C Hamano
2024-09-19 12:13       ` [PATCH v3 0/2] fetch: set remote/HEAD if missing Bence Ferdinandy
2024-09-19 12:13         ` [PATCH v3 1/2] update_symref: add REF_CREATE_ONLY option Bence Ferdinandy
2024-09-19 22:46           ` Junio C Hamano
2024-09-20 14:11             ` Bence Ferdinandy
2024-09-21 13:40           ` Phillip Wood
2024-09-21 22:19             ` Bence Ferdinandy
2024-09-22 16:56               ` Junio C Hamano
2024-09-29 22:58               ` Bence Ferdinandy
2024-09-30  6:40                 ` Patrick Steinhardt
2024-09-30  9:27                   ` Bence Ferdinandy
2024-09-30 22:19                     ` [PATCH v4 0/5] improve handling of remote/HEAD Bence Ferdinandy
2024-09-30 22:19                       ` [PATCH v4 1/5] refs_update_symref: atomically record overwritten ref Bence Ferdinandy
2024-10-01 19:10                         ` Junio C Hamano
2024-09-30 22:19                       ` [PATCH v4 2/5] set-head: better output for --auto Bence Ferdinandy
2024-10-01 22:54                         ` Junio C Hamano
2024-09-30 22:19                       ` [PATCH v4 3/5] transaction: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-09-30 22:19                       ` [PATCH v4 4/5] refs_update_symref: add create_only option Bence Ferdinandy
2024-09-30 22:19                       ` [PATCH v4 5/5] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-03 19:21                       ` [PATCH v4 0/5] improve handling of remote/HEAD Junio C Hamano
2024-10-03 19:48                         ` Bence Ferdinandy
2024-10-09 13:57                         ` [PATCH v5 1/6] refs_update_symref: atomically record overwritten ref Bence Ferdinandy
2024-10-09 13:57                           ` [PATCH v5 2/6] set-head: add new variable for readability Bence Ferdinandy
2024-10-09 19:26                             ` Junio C Hamano
2024-10-09 19:47                               ` Bence Ferdinandy
2024-10-09 13:57                           ` [PATCH v5 3/6] set-head: better output for --auto Bence Ferdinandy
2024-10-09 20:53                             ` Junio C Hamano
2024-10-10 15:57                               ` Junio C Hamano
2024-10-10 16:54                                 ` Ramsay Jones
2024-10-10 19:08                                 ` Bence Ferdinandy
2024-10-09 13:57                           ` [PATCH v5 4/6] transaction: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-09 21:08                             ` Junio C Hamano
2024-10-09 13:57                           ` [PATCH v5 5/6] refs_update_symref: add create_only option Bence Ferdinandy
2024-10-09 21:37                             ` Junio C Hamano
2024-10-09 13:57                           ` [PATCH v5 6/6] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-09 22:01                             ` Junio C Hamano
2024-10-10 13:29                               ` [PATCH v6 1/6] refs_update_symref: atomically record overwritten ref Bence Ferdinandy
2024-10-10 13:29                                 ` [PATCH v6 2/6] set-head: add new variable for readability Bence Ferdinandy
2024-10-10 13:29                                 ` [PATCH v6 3/6] set-head: better output for --auto Bence Ferdinandy
2024-10-10 21:05                                   ` karthik nayak
2024-10-11  9:03                                     ` Bence Ferdinandy
2024-10-11 16:31                                       ` Junio C Hamano
2024-10-11 20:43                                       ` karthik nayak
2024-10-12 22:29                                         ` Bence Ferdinandy
2024-10-15  7:51                                           ` karthik nayak
2024-10-15 14:10                                             ` Phillip Wood
2024-10-15 16:17                                               ` Bence Ferdinandy
2024-10-10 13:29                                 ` [PATCH v6 4/6] transaction: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-10 21:12                                   ` karthik nayak
2024-10-11 16:34                                     ` Junio C Hamano
2024-10-10 13:30                                 ` [PATCH v6 5/6] refs_update_symref: add create_only option Bence Ferdinandy
2024-10-10 13:30                                 ` [PATCH v6 6/6] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-12 23:03                                 ` [PATCH v7 1/6] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-10-12 23:03                                   ` [PATCH v7 2/6] remote set-head: add new variable for readability Bence Ferdinandy
2024-10-12 23:03                                   ` [PATCH v7 3/6] remote set-head: better output for --auto Bence Ferdinandy
2024-10-12 23:03                                   ` [PATCH v7 4/6] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-13 14:03                                     ` Phillip Wood
2024-10-13 20:52                                       ` Bence Ferdinandy
2024-10-14  8:48                                         ` Phillip Wood
2024-10-12 23:03                                   ` [PATCH v7 5/6] refs: add create_only option to refs_update_symref Bence Ferdinandy
2024-10-12 23:03                                   ` [PATCH v7 6/6] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-13 13:52                                   ` [PATCH v7 1/6] refs: atomically record overwritten ref in update_symref Phillip Wood
2024-10-13 21:24                                     ` Bence Ferdinandy
2024-10-15 14:05                                       ` Phillip Wood
2024-10-15 17:25                                         ` Bence Ferdinandy
2024-10-19 22:53                                           ` Bence Ferdinandy
2024-10-14 22:53                                   ` [PATCH v8 0/6] set-head/fetch remote/HEAD updates, small change from v7 Bence Ferdinandy
2024-10-14 22:53                                     ` Bence Ferdinandy [this message]
2024-10-15  7:41                                       ` [PATCH v8 1/6] refs: atomically record overwritten ref in update_symref karthik nayak
2024-10-15 16:24                                         ` Bence Ferdinandy
2024-10-14 22:53                                     ` [PATCH v8 2/6] remote set-head: add new variable for readability Bence Ferdinandy
2024-10-14 22:53                                     ` [PATCH v8 3/6] remote set-head: better output for --auto Bence Ferdinandy
2024-10-15  7:47                                       ` karthik nayak
2024-10-15 16:31                                         ` Bence Ferdinandy
2024-10-14 22:53                                     ` [PATCH v8 4/6] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-14 22:53                                     ` [PATCH v8 5/6] refs: add create_only option to refs_update_symref Bence Ferdinandy
2024-10-14 22:53                                     ` [PATCH v8 6/6] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-16  0:26                                     ` [PATCH v8 0/6] set-head/fetch remote/HEAD updates, small change from v7 Taylor Blau
2024-10-16  8:18                                       ` Bence Ferdinandy
2024-10-16 21:05                                         ` Taylor Blau
2024-10-17 15:23                                           ` Bence Ferdinandy
2024-10-19 22:53                                       ` [PATCH v9 0/7] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 1/7] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 2/7] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 3/7] remote set-head: refactor for readability Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 4/7] remote set-head: better output for --auto Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 5/7] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 6/7] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-10-19 22:53                                         ` [PATCH v9 7/7] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-21 21:13                                         ` [PATCH v9 0/7] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-10-22 19:45                                           ` [PATCH v11 0/8] " Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 1/8] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-10-22 19:53                                               ` Kristoffer Haugsbakk
2024-10-22 20:14                                                 ` Bence Ferdinandy
2024-10-23 15:09                                                   ` Taylor Blau
2024-10-23 15:34                                                     ` Bence Ferdinandy
2024-10-23 18:45                                                       ` Taylor Blau
2024-10-22 19:45                                             ` [PATCH v11 2/8] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 3/8] remote set-head: refactor for readability Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 4/8] remote set-head: better output for --auto Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 5/8] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 6/8] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 7/8] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-22 19:45                                             ` [PATCH v11 8/8] fetch set_head: handle mirrored bare repositories Bence Ferdinandy
2024-10-23 15:36                                             ` [PATCH v12 0/8] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 1/8] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-11-15  4:52                                                 ` Junio C Hamano
2024-11-15 22:03                                                   ` Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 2/8] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-11-15  5:50                                                 ` Junio C Hamano
2024-11-15 22:18                                                   ` Bence Ferdinandy
2024-11-15 23:27                                                     ` Bence Ferdinandy
2024-11-16  7:58                                                       ` Junio C Hamano
2024-11-17 23:39                                                   ` Bence Ferdinandy
2024-11-18  0:39                                                     ` Junio C Hamano
2024-11-18  7:22                                                     ` Patrick Steinhardt
2024-11-18  8:08                                                       ` Bence Ferdinandy
2024-11-18  8:24                                                         ` Patrick Steinhardt
2024-11-18 11:37                                                           ` Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 3/8] remote set-head: refactor for readability Bence Ferdinandy
2024-11-15  5:50                                                 ` Junio C Hamano
2024-10-23 15:36                                               ` [PATCH v12 4/8] remote set-head: better output for --auto Bence Ferdinandy
2024-11-15  5:50                                                 ` Junio C Hamano
2024-11-15 22:49                                                   ` Bence Ferdinandy
2024-11-15 23:13                                                     ` Bence Ferdinandy
2024-11-16  0:22                                                       ` Junio C Hamano
2024-11-16  0:15                                                     ` Junio C Hamano
2024-11-16 14:43                                                       ` Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 5/8] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 6/8] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 7/8] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-10-23 16:50                                                 ` Kristoffer Haugsbakk
2024-10-23 17:07                                                   ` Bence Ferdinandy
2024-10-23 15:36                                               ` [PATCH v12 8/8] fetch set_head: handle mirrored bare repositories Bence Ferdinandy
2024-11-14 20:23                                               ` [PATCH v12 0/8] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-11-18 15:09                                               ` [PATCH v13 0/9] " Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 1/9] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-11-20  3:46                                                   ` Junio C Hamano
2024-11-18 15:09                                                 ` [PATCH v13 2/9] refs: standardize output of refs_read_symbolic_ref Bence Ferdinandy
2024-11-19  1:22                                                   ` Junio C Hamano
2024-11-19  6:44                                                     ` Patrick Steinhardt
2024-11-19  6:54                                                       ` Junio C Hamano
2024-11-19  7:26                                                         ` Patrick Steinhardt
2024-11-19 10:10                                                           ` Bence Ferdinandy
2024-11-19  5:10                                                   ` Junio C Hamano
2024-11-19 10:04                                                     ` Bence Ferdinandy
2024-11-19  6:48                                                   ` Patrick Steinhardt
2024-11-19 10:17                                                     ` Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 3/9] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 4/9] remote set-head: refactor for readability Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 5/9] remote set-head: better output for --auto Bence Ferdinandy
2024-11-19  2:27                                                   ` Junio C Hamano
2024-11-19 10:29                                                     ` Bence Ferdinandy
2024-11-19 10:54                                                       ` Junio C Hamano
2024-11-19 11:33                                                         ` Bence Ferdinandy
2024-11-20 12:49                                                         ` Bence Ferdinandy
2024-11-20 23:56                                                           ` Junio C Hamano
2024-11-18 15:09                                                 ` [PATCH v13 6/9] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 7/9] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-11-19  2:54                                                   ` Junio C Hamano
2024-11-18 15:09                                                 ` [PATCH v13 8/9] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-11-19  3:16                                                   ` Junio C Hamano
2024-11-19 11:27                                                     ` Bence Ferdinandy
2024-11-20  1:00                                                       ` Junio C Hamano
2024-11-20  2:28                                                         ` Junio C Hamano
2024-11-20 10:45                                                         ` Bence Ferdinandy
2024-11-18 15:09                                                 ` [PATCH v13 9/9] fetch set_head: handle mirrored bare repositories Bence Ferdinandy
2024-11-21 22:55                                                 ` [PATCH v14 00/10] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 01/10] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 02/10] t/t5505-remote: test failure of set-head Bence Ferdinandy
2024-11-22  4:54                                                     ` Junio C Hamano
2024-11-21 22:55                                                   ` [PATCH v14 03/10] refs: standardize output of refs_read_symbolic_ref Bence Ferdinandy
2024-11-22 10:37                                                     ` karthik nayak
2024-11-22 10:53                                                       ` Bence Ferdinandy
2024-11-22 10:55                                                         ` Bence Ferdinandy
2024-11-22 11:30                                                         ` karthik nayak
2024-11-22 12:23                                                           ` Bence Ferdinandy
2024-11-25  2:56                                                             ` Junio C Hamano
2024-11-26 14:57                                                               ` Bence Ferdinandy
2024-11-26 16:53                                                                 ` karthik nayak
2024-11-26 20:02                                                                   ` Junio C Hamano
2024-11-26 20:56                                                                     ` Bence Ferdinandy
2024-11-26 21:39                                                                       ` Junio C Hamano
2024-11-26 20:44                                                                   ` Bence Ferdinandy
2024-11-22 11:27                                                       ` Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 04/10] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 05/10] remote set-head: refactor for readability Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 06/10] remote set-head: better output for --auto Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 07/10] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 08/10] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 09/10] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-11-21 22:55                                                   ` [PATCH v14 10/10] fetch set_head: handle mirrored bare repositories Bence Ferdinandy
2024-11-22 12:28                                                   ` [PATCH v15 00/10] set-head/fetch remote/HEAD updates Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 01/10] t/t5505-remote: set default branch to main Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 02/10] t/t5505-remote: test failure of set-head Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 03/10] refs: standardize output of refs_read_symbolic_ref Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 04/10] refs: atomically record overwritten ref in update_symref Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 05/10] remote set-head: refactor for readability Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 06/10] remote set-head: better output for --auto Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 07/10] refs: add TRANSACTION_CREATE_EXISTS error Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 08/10] refs: add create_only option to refs_update_symref_extended Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 09/10] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-12-05 18:58                                                       ` Josh Steadmon
2024-12-05 19:50                                                         ` Josh Steadmon
2024-12-05 20:09                                                           ` Bence Ferdinandy
2024-12-05 20:11                                                             ` Josh Steadmon
2024-12-05 20:27                                                               ` [PATCH] Fix `git fetch --tags` in repo with no configured remote Josh Steadmon
2024-12-06  3:07                                                                 ` Junio C Hamano
2024-12-06  3:28                                                                 ` Junio C Hamano
2024-12-06  4:00                                                                   ` Junio C Hamano
2024-12-06  8:07                                                                   ` Re* " Junio C Hamano
2024-12-06  8:08                                                                   ` Junio C Hamano
2024-12-06 11:23                                                                     ` Bence Ferdinandy
2024-12-06 11:30                                                                     ` Junio C Hamano
2024-12-05 20:57                                                               ` [PATCH v15 09/10] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-11-22 12:28                                                     ` [PATCH v15 10/10] fetch set_head: handle mirrored bare repositories Bence Ferdinandy
2024-11-27  9:16                                                     ` [PATCH v1] fetch: add configuration for set_head behaviour Bence Ferdinandy
2024-11-27 13:46                                                       ` Junio C Hamano
2024-11-27 19:20                                                         ` Bence Ferdinandy
2024-11-28  0:12                                                           ` Junio C Hamano
2024-11-28  5:49                                                             ` Bence Ferdinandy
2024-11-28  6:06                                                               ` Junio C Hamano
2024-12-03 21:56                                                                 ` [RFC PATCH v1 0/2] set_head finishing touches Bence Ferdinandy
2024-12-03 21:56                                                                   ` [RFC PATCH v1 1/2] fetch set_head: add warn-if-not-$branch option Bence Ferdinandy
2024-12-04  2:20                                                                     ` Junio C Hamano
2024-12-04  8:15                                                                       ` Bence Ferdinandy
2024-12-03 21:56                                                                   ` [RFC PATCH v1 2/2] remote set-head: set followRemoteHEAD to "warn" if "always" Bence Ferdinandy
2024-12-04  2:22                                                                     ` Junio C Hamano
2024-12-04 10:39                                                                   ` [PATCH v2 1/3] fetch set_head: move warn advice into advise_if_enabled Bence Ferdinandy
2024-12-04 10:39                                                                     ` [PATCH v2 2/3] fetch set_head: add warn-if-not-$branch option Bence Ferdinandy
2024-12-04 10:39                                                                     ` [PATCH v2 3/3] remote set-head: set followRemoteHEAD to "warn" if "always" Bence Ferdinandy
2024-12-04 11:43                                                                       ` Kristoffer Haugsbakk
2024-12-04 20:40                                                                         ` Junio C Hamano
2024-12-04 20:44                                                                           ` Kristoffer Haugsbakk
2024-12-05  8:14                                                                             ` Bence Ferdinandy
2024-12-05 12:16                                                                             ` [PATCH v3 1/3] fetch set_head: move warn advice into advise_if_enabled Bence Ferdinandy
2024-12-05 12:16                                                                               ` [PATCH v3 2/3] fetch set_head: add warn-if-not-$branch option Bence Ferdinandy
2025-01-05 11:42                                                                                 ` Teng Long
2025-01-05 15:13                                                                                   ` Bence Ferdinandy
2025-01-05 16:09                                                                                   ` [PATCH] fetch: fix erroneous set_head advice message Bence Ferdinandy
2025-01-06 14:50                                                                                     ` Junio C Hamano
2024-12-05 12:16                                                                               ` [PATCH v3 3/3] remote set-head: set followRemoteHEAD to "warn" if "always" Bence Ferdinandy
2024-12-04 19:28                                                                     ` [PATCH v2 1/3] fetch set_head: move warn advice into advise_if_enabled Junio C Hamano
2024-11-28 11:19                                                         ` [PATCH v2] fetch: add configuration for set_head behaviour Bence Ferdinandy
2024-11-28 23:06                                                           ` [PATCH v3] " Bence Ferdinandy
2024-12-02  0:58                                                             ` Junio C Hamano
2024-11-28 23:09                                                           ` Bence Ferdinandy
2024-09-19 12:13         ` [PATCH v3 2/2] fetch: set remote/HEAD if it does not exist Bence Ferdinandy
2024-09-19 23:07           ` Junio C Hamano
2024-09-20 13:50             ` Bence Ferdinandy
2024-09-10 20:37 ` [RFC PATCH v2 2/2] set-head: do not update if there is no change Bence Ferdinandy
2024-09-10 22:29 ` [RFC PATCH v2 0/2] set remote/HEAD with fetch Junio C Hamano
2024-09-11 12:24   ` Bence Ferdinandy
2024-09-11 15:59     ` Junio C Hamano

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=20241014225431.1394565-2-bence@ferdinandy.com \
    --to=bence@ferdinandy$(echo .)com \
    --cc=Johannes.Schindelin@gmx$(echo .)de \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=karthik.188@gmail$(echo .)com \
    --cc=l.s.r@web$(echo .)de \
    --cc=me@ttaylorr$(echo .)com \
    --cc=phillip.wood@dunelm$(echo .)org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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