Thread (1 message) 1 message, 1 author, 2024-10-09

Re: [PATCH v5 3/6] set-head: better output for --auto

From: Junio C Hamano <hidden>
Date: 2024-10-09 20:53:11

Bence Ferdinandy [off-list ref] writes:
+static void report_auto(const char *remote, const char *head_name,
+			struct strbuf *buf_prev) {
+	struct strbuf buf_prefix = STRBUF_INIT;
+	const char *prev_head;
I think we need to initialize prev_head to NULL.
+	strbuf_addf(&buf_prefix, "refs/remotes/%s/", remote);
+	skip_prefix(buf_prev->buf, buf_prefix.buf, &prev_head);
If the symref was not pointing into the "refs/remotes/<remote>/"
hierarchy previously, skip_prefix() comes back without touching
prev_head (i.e. not starting with the prefix does not clear it).

Assuming that we fix the initialization, the rest of the function
looks more or less correct.
+	if (prev_head && !strcmp(prev_head, head_name))
+		printf("'%s/HEAD' is unchanged and points to '%s'\n",
+			remote, head_name);
+	else if (prev_head)
+		printf("'%s/HEAD' has changed from '%s' and now points to '%s'\n",
+			remote, prev_head, head_name);
+	else
+		printf("'%s/HEAD' is now created and points to '%s'\n",
+			remote, head_name);
The "more or less" part is that the message does not let you tell
between refs/remotes/<name>/HEAD that did not exist, and
refs/remotes/<name>/HEAD that used to point at somewhere unexpected,
outside refs/remotes/<name>/ hierarchy.

For that, we can check if buf_prev->len is 0 (in which case, the
"now created and points at" applies) or non-zero (in which case, we
say something like "used to point at '%s' (which is unusual), but
now points at '%s' as requested").
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help