From: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
To: smacdonald@kaimaging.com
Cc: git@vger.kernel.org, jayatheerthkulkarni2005@gmail.com
Subject: [PATCH] stash: fix incorrect branch name in stash message
Date: Mon, 12 May 2025 22:10:01 +0530 [thread overview]
Message-ID: <20250512164001.62065-1-jayatheerthkulkarni2005@gmail.com> (raw)
In-Reply-To: <TO1PPF29324B4CE2F822159A3F1C6A5F3B4CD97A@TO1PPF29324B4CE.CANPRD01.PROD.OUTLOOK.COM>
When creating a stash, Git builds the stash commit message using the current
branch name of the superproject. However, in repositories that include
submodules, the stash message may incorrectly show the submodule branch
instead of the superproject.
This happens because `branch_name` is obtained via `refs_resolve_ref_unsafe()`,
which returns a pointer to a static buffer. Later calls to the same function
(e.g., during commit creation or submodule reference resolution) overwrite
this buffer, causing the `branch_name` used in the final stash message to be
incorrect.
Reported-by: Stuart <smacdonald@kaimaging.com>
Signed-off-by: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
---
builtin/stash.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/builtin/stash.c b/builtin/stash.c
index cfbd92852a..6a375a3430 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -1377,6 +1377,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
struct strbuf msg = STRBUF_INIT;
struct strbuf commit_tree_label = STRBUF_INIT;
struct strbuf untracked_files = STRBUF_INIT;
+ char *branch_name_buf = NULL;
prepare_fallback_ident("git stash", "git@stash");
@@ -1404,11 +1405,20 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
branch_ref = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
"HEAD", 0, NULL, &flags);
- if (flags & REF_ISSYMREF)
- skip_prefix(branch_ref, "refs/heads/", &branch_name);
- head_short_sha1 = repo_find_unique_abbrev(the_repository,
- &head_commit->object.oid,
- DEFAULT_ABBREV);
+
+ if (flags & REF_ISSYMREF) {
+ const char *tmp = NULL;
+ if (skip_prefix(branch_ref, "refs/heads/", &tmp))
+ branch_name_buf = xstrdup(tmp);
+ }
+ if (branch_name_buf)
+ branch_name = branch_name_buf;
+ else
+ branch_name = "(no branch)";
+
+ head_short_sha1 = repo_find_unique_abbrev(the_repository,
+ &head_commit->object.oid,
+ DEFAULT_ABBREV);
strbuf_addf(&msg, "%s: %s ", branch_name, head_short_sha1);
pp_commit_easy(CMIT_FMT_ONELINE, head_commit, &msg);
--
2.49.GIT
next prev parent reply other threads:[~2025-05-12 16:40 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-12 15:19 [BUG] git stash incorrectly showing submodule branch instead of superproject branch Stuart MacDonald
2025-05-12 16:12 ` Re " K Jayatheerth
2025-05-12 16:26 ` Stuart MacDonald
2025-05-12 16:40 ` K Jayatheerth [this message]
2025-05-12 16:42 ` [PATCH] stash: fix incorrect branch name in stash message JAYATHEERTH K
2025-05-12 17:09 ` Stuart MacDonald
2025-05-12 17:49 ` Junio C Hamano
2025-05-12 18:54 ` Eric Sunshine
2025-05-13 1:21 ` JAYATHEERTH K
2025-05-14 13:28 ` Junio C Hamano
2025-06-08 6:35 ` K Jayatheerth
2025-06-08 13:11 ` René Scharfe
2025-06-08 14:45 ` [PATCH v2] " K Jayatheerth
2025-06-08 16:20 ` Junio C Hamano
2025-06-11 1:32 ` JAYATHEERTH K
2025-06-11 1:42 ` [PATCH v3] " K Jayatheerth
2025-06-11 16:00 ` 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=20250512164001.62065-1-jayatheerthkulkarni2005@gmail.com \
--to=jayatheerthkulkarni2005@gmail.com \
--cc=git@vger.kernel.org \
--cc=smacdonald@kaimaging.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).