From: Jon Seymour <jon.seymour@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, ams@toroid.org, jon.seymour@gmail.com
Subject: [PATCH v2 1/3] stash: It looks like a stash, but doesn't quack like a stash...
Date: Tue, 3 Aug 2010 20:36:13 +1000 [thread overview]
Message-ID: <1280831775-30759-2-git-send-email-jon.seymour@gmail.com> (raw)
In-Reply-To: <1280831775-30759-1-git-send-email-jon.seymour@gmail.com>
In particular, a stash created with git stash create cannot be used as
an argument to git stash branch because of two separate reasons.
1. a pre-condition assumes that there is always a stash on the stack when git stash branch is called,
which is not necessarily true
2. the cleanup code assumes the specified stash is a stash reference, rather than an arbitrary commit.
The test_expect_failure tests in this patch demonstrate these issues.
Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
---
t/t3903-stash.sh | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 62e208a..4d8b6ad 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -378,4 +378,34 @@ test_expect_failure 'stash file to directory' '
test foo = "$(cat file/file)"
'
+test_expect_failure 'stash branch from arbitrary stash ref when there are no stash references' '
+ git stash clear &&
+ test_when_finished "git reset --hard HEAD" &&
+ git reset --hard &&
+ echo foo >> file &&
+ git tag stash-tag $(git stash create) &&
+ test_when_finished "git tag -d stash-tag" &&
+ git reset --hard &&
+ git stash branch stash-branch $(git rev-parse stash-tag) &&
+ test_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" &&
+ test $(git ls-files --modified | wc -l) -eq 1
+'
+
+test_expect_failure 'stash branch from arbitrary stash ref fails even if there is a stash' '
+ git stash clear && {
+ git branch -D stash-branch || true
+ }
+ test_when_finished "git reset --hard HEAD" &&
+ git reset --hard &&
+ echo foo >> file &&
+ git stash &&
+ echo bar >> file &&
+ git tag stash-tag $(git stash create) &&
+ test_when_finished "git tag -d stash-tag" &&
+ git reset --hard &&
+ git stash branch stash-branch $(git rev-parse stash-tag) &&
+ test_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" &&
+ test $(git ls-files --modified | wc -l) -eq 1
+'
+
test_done
--
1.7.2.1.111.g8fc90
next prev parent reply other threads:[~2010-08-03 10:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-03 10:36 [PATCH v2 0/3] *** SUBJECT HERE *** Jon Seymour
2010-08-03 10:36 ` Jon Seymour [this message]
2010-08-04 23:31 ` [PATCH v2 1/3] stash: It looks like a stash, but doesn't quack like a stash Junio C Hamano
2010-08-03 10:36 ` [PATCH v2 2/3] stash: Allow git stash branch to process commits that look like stashes but are not stash references Jon Seymour
2010-08-04 23:51 ` Junio C Hamano
2010-08-05 5:23 ` Jon Seymour
2010-08-05 7:50 ` Jon Seymour
2010-08-05 20:13 ` Junio C Hamano
2010-08-03 10:36 ` [PATCH v2 3/3] stash: modify tests to reflect stash branch fixes Jon Seymour
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=1280831775-30759-2-git-send-email-jon.seymour@gmail.com \
--to=jon.seymour@gmail.com \
--cc=ams@toroid.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.