From: Thomas Gummerer <t.gummerer@gmail.com> To: Jeff King <peff@peff.net> Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com> Subject: Re: [PATCH v2 3/3] stash: keep untracked files intact in stash -k Date: Wed, 22 Mar 2017 21:46:34 +0000 Message-ID: <20170322214634.GG27158@hank> (raw) In-Reply-To: <20170321223809.c7wik5lfjylno6wn@sigill.intra.peff.net> On 03/21, Jeff King wrote: > On Tue, Mar 21, 2017 at 10:12:19PM +0000, Thomas Gummerer wrote: > > > Currently when there are untracked changes in a file "one" and in a file > > "two" in the repository and the user uses: > > > > git stash push -k one > > > > all changes in "two" are wiped out completely. That is clearly not the > > intended result. Make sure that only the files given in the pathspec > > are changed when git stash push -k <pathspec> is used. > > Good description. I basically just tweaked your report here :) thanks for that! > > diff --git a/git-stash.sh b/git-stash.sh > > index 13711764a9..2fb651b2b8 100755 > > --- a/git-stash.sh > > +++ b/git-stash.sh > > @@ -314,7 +314,9 @@ push_stash () { > > > > if test "$keep_index" = "t" && test -n "$i_tree" > > then > > - git read-tree --reset -u $i_tree > > + git read-tree --reset $i_tree > > + git ls-files -z --modified -- "$@" | > > + git checkout-index -z --force --stdin > > fi > > I briefly wondered if this needed "-q" to match the earlier commit, but > "checkout-index" isn't really chatty, so I don't think so (and the > earlier checkout-index doesn't have it either). Yep, I had the same thoughts here. > I also wondered if this could be done in a single command as: > > git reset -q --hard $i_tree -- "$@" > > But "git reset" can't handle pathspecs with "--hard" (which is why the > similar case a few lines above uses the same commands). Yeah unfortunately, that would have made the previous patch series quite a bit easier :) But here it wouldn't help anyway, as git reset without pathspecs can't handle a tree-ish either, right? And we also want to handle the case where no pathspecs are given to git stash. > > So this looks good to me. > > > +test_expect_success 'stash -k -- <pathspec> leaves unstaged files intact' ' > > + git reset && > > + >foo && > > + >bar && > > + git add foo bar && > > + git commit -m "test" && > > + echo "foo" >foo && > > + echo "bar" >bar && > > + git stash -k -- foo && > > + test "",bar = $(cat foo),$(cat bar) && > > + git stash pop && > > + test foo,bar = $(cat foo),$(cat bar) > > +' > > I always get nervous when I see test arguments without quotes, but I > think this is fine (and I couldn't see a shorter way of doing it with > test_cmp). Hmm yeah I basically copied this from a different test and tweaked it a bit to fit here. > -Peff
next prev parent reply index Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-17 14:50 [BUG] "git stash -- path" reports wrong unstaged changes Jeff King 2017-03-18 18:36 ` Thomas Gummerer 2017-03-19 20:23 ` Thomas Gummerer 2017-03-19 20:23 ` [PATCH/RFC 1/3] stash: show less information for stash push -- <pathspec> Thomas Gummerer 2017-03-20 17:51 ` Junio C Hamano 2017-03-20 18:48 ` Jeff King 2017-03-20 19:42 ` Junio C Hamano 2017-03-21 20:48 ` Thomas Gummerer 2017-03-20 18:42 ` Jeff King 2017-03-19 20:23 ` [PATCH/RFC 2/3] stash: make push -p -q --no-keep-index quiet Thomas Gummerer 2017-03-20 18:55 ` Jeff King 2017-03-19 20:23 ` [PATCH/RFC 3/3] stash: pass the pathspec argument to git reset Thomas Gummerer 2017-03-20 19:08 ` Jeff King 2017-03-21 21:14 ` Thomas Gummerer 2017-03-21 22:12 ` Jeff King 2017-03-21 22:12 ` [PATCH v2 0/3] Re: [BUG] "git stash -- path" reports wrong unstaged changes Thomas Gummerer 2017-03-21 22:12 ` [PATCH v2 1/3] stash: don't show internal implementation details Thomas Gummerer 2017-03-21 22:14 ` Jeff King 2017-03-22 21:33 ` Thomas Gummerer 2017-03-22 21:41 ` Jeff King 2017-03-21 22:12 ` [PATCH v2 2/3] stash: pass the pathspec argument to git reset Thomas Gummerer 2017-03-21 22:19 ` Jeff King 2017-03-21 22:12 ` [PATCH v2 3/3] stash: keep untracked files intact in stash -k Thomas Gummerer 2017-03-21 22:38 ` Jeff King 2017-03-22 21:46 ` Thomas Gummerer [this message] 2017-03-20 18:41 ` [BUG] "git stash -- path" reports wrong unstaged changes Jeff King
Reply instructions: You may reply publically 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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170322214634.GG27158@hank \ --to=t.gummerer@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=peff@peff.net \ /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
git@vger.kernel.org list mirror (unofficial, one of many) Archives are clonable: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git Example config snippet for mirrors Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.org/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ AGPL code for this site: git clone https://public-inbox.org/public-inbox.git