Thread (13 messages) 13 messages, 2 authors, 2025-06-10

Re: [PATCH v3 0/2] stash: fix and improve "git stash -p <pathspec>"

From: Martin Ågren <hidden>
Date: 2025-06-07 12:56:42

Hi Phillip,

On Sat, 7 Jun 2025 at 11:45, Phillip Wood [off-list ref] wrote:
Range-diff against v2:
     +test_expect_success 'stash -p <pathspec> stash and restores the file' '
    -+  cat file >expect-file &&
    -+  echo changed-file >file &&
    ++  test_write_lines b c >file &&
    ++  git commit -m "add a few lines" file &&
    ++  test_write_lines a b c d >file &&
    ++  test_write_lines b c d >expect-file &&
     +  echo changed-other-file >other-file &&
    -+  echo a | git stash -p file &&
    ++  test_write_lines s y n | git stash -p file &&
     +  test_cmp expect-file file &&
     +  echo changed-other-file >expect &&
     +  test_cmp expect other-file &&
This range-diff matches what I'd expect. Now this test makes sure we
really pick up the `-p`. On that note ... I just realized that all of
these would keep the test passing:

 test_write_lines s y n | git stash -p file # what you have
 test_write_lines s y n | git stash -p file otherfile
 test_write_lines s y n | git stash -p .
 test_write_lines s y n | git stash -p

So the implementation under test could bungle the pathspec, query the
user for both `file` and `otherfile` (in that order!), get EOF from
stdin while handling `otherfile`, leave it out of the stash, and end up
passing the test. We could try to protect against this by providing
another "y": if git wants to read something after our "s y n" sequence,
we'll give it a "y" in the hopes that it will trip things up. We do want
to test the handling of pathspecs here, so maybe tighten this?
    ++  git checkout HEAD -- file &&
This is better than what I had in my "maybe something like this". This
explicitly restores the file.

Martin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help