summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-03-06 21:25:32 -0800
committerJunio C Hamano <gitster@pobox.com>2022-03-06 21:25:33 -0800
commit11da0a558063a94498932ed3d73dbabf1bda6dd0 (patch)
tree6e99d5d76ca815bbd68d9e3ea06868fa6b90e49a
parentMerge branch 'ah/advice-switch-requires-detach-to-detach' (diff)
parentstash: strip "refs/heads/" with skip_prefix (diff)
downloadgit-11da0a558063a94498932ed3d73dbabf1bda6dd0.tar.gz
git-11da0a558063a94498932ed3d73dbabf1bda6dd0.zip
Merge branch 'gc/stash-on-branch-with-multi-level-name'
"git checkout -b branch/with/multi/level/name && git stash" only recorded the last level component of the branch name, which has been corrected. * gc/stash-on-branch-with-multi-level-name: stash: strip "refs/heads/" with skip_prefix
-rw-r--r--builtin/stash.c2
-rwxr-xr-xt/t3903-stash.sh11
2 files changed, 12 insertions, 1 deletions
diff --git a/builtin/stash.c b/builtin/stash.c
index 5897febfbe..3e8af210fd 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -1327,7 +1327,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
branch_ref = resolve_ref_unsafe("HEAD", 0, NULL, &flags);
if (flags & REF_ISSYMREF)
- branch_name = strrchr(branch_ref, '/') + 1;
+ skip_prefix(branch_ref, "refs/heads/", &branch_name);
head_short_sha1 = find_unique_abbrev(&head_commit->object.oid,
DEFAULT_ABBREV);
strbuf_addf(&msg, "%s: %s ", branch_name, head_short_sha1);
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index d5ecee4fcc..f36e121210 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -1045,6 +1045,17 @@ test_expect_success 'create stores correct message' '
test_cmp expect actual
'
+test_expect_success 'create when branch name has /' '
+ test_when_finished "git checkout main" &&
+ git checkout -b some/topic &&
+ >foo &&
+ git add foo &&
+ STASH_ID=$(git stash create "create test message") &&
+ echo "On some/topic: create test message" >expect &&
+ git show --pretty=%s -s ${STASH_ID} >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'create with multiple arguments for the message' '
>foo &&
git add foo &&