git/list[1] front-page[2] threads[3] people[4] search[5] about
 

"git-stash --keep-index" crashes when there are no tracked files

From
Piotr Siupa <piotrsiupa@gmail.com>
Date
Aug 13, 2024, 17:36 UTC
Message-ID
<CAPM0=yCJ0snEznK0C+zkmGofWHE3OPWoMXSVGH6=TdM7=rZ84g@mail.gmail.com>
Hello,

I've found a bug. It's something that's unlikely to happen in a normal workflow but it breaks a script I'm trying to write.

Here is the complete report from "git bugreport":

Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue) git init git commit --allow-empty --message='initial commit' touch foo git stash push --include-untracked --keep-index

What did you expect to happen? (Expected behavior) A stash entry storing the untracked file "foo" should be created. The working directory and index should become empty.

What happened instead? (Actual behavior) The command did what was expected but after that it crashed with the following error message: error: pathspec ':/' did not match any file(s) known to git

What's different between what you expected and what actually happened? There should be no error message and the exit code should be 0.

Anything else you want to add: This happens only if there are no files in the current HEAD. Adding any file to the initial commit prevents the error from occurring (even if it is unchanged when the stash is created). I suspect that the command has trouble with the corner case of restoring the state of the index when there are no tracked files. I also tested it using executables of "git-stash" compiled from current branches "maint" and "next". The behavior is the same.

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info] git version: git version 2.34.1 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 6.8.0-39-generic #39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 10 15:35:09 UTC 2 x86_64 compiler info: gnuc: 11.4 libc info: glibc: 2.35 $SHELL (typically, interactive shell): /bin/bash

[Enabled Hooks]
Next: Patrick Steinhardt
Message 1 of 3 in “"git-stash --keep-index" crashes when there are no tracked files”
  1. Piotr SiupaAug 13, 2024
  2. Patrick SteinhardtAug 16, 2024
  3. builtin/stash: fix `--keep-index --include-untracked` with empty HEADPatrick Steinhardt, Aug 16, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.