git stash doesn't honor --work-tree or GIT_WORK_TREE
- From
- Aaron Brooks <aaron@brooks1.net>
- Date
- Nov 30, 2013, 19:04 UTC
- Message-ID
- <CABL6xpD9jvJWjUj0n+mgC419fGzA2N-b_yJho9zharCD6YTSiw@mail.gmail.com>
Unlike other commands, git stash doesn't work outside of the worktree, even when --work-tree is specified:
abrooks@host:~/tmp$ mkdir test-repo abrooks@host:~/tmp$ cd !$ cd test-repo abrooks@host:~/tmp/test-repo$ git init Initialized empty Git repository in /home/abrooks/tmp/test-repo/.git/ abrooks@host:~/tmp/test-repo$ echo "foo" > foo.txt abrooks@host:~/tmp/test-repo$ git add foo.txt abrooks@host:~/tmp/test-repo$ git commit -m "adding foo" [master (root-commit) 9d0705e] adding foo 1 file changed, 1 insertion(+) create mode 100644 foo.txt abrooks@host:~/tmp/test-repo$ echo "bar" >> foo.txt abrooks@host:~/tmp/test-repo$ cd .. abrooks@host:~/tmp$ git --git-dir=./test-repo/.git --work-tree=./test-repo stash fatal: /usr/lib/git-core/git-stash cannot be used without a working tree. abrooks@host:~/tmp$ cd test-repo/ abrooks@host:~/tmp/test-repo$ git stash Saved working directory and index state WIP on master: 9d0705e adding foo HEAD is now at 9d0705e adding foo abrooks@host:~/tmp/test-repo$ cd ../ abrooks@host:~/tmp$ git --git-dir=./test-repo/.git --work-tree=./test-repo stash list fatal: /usr/lib/git-core/git-stash cannot be used without a working tree.
The same also does not work when setting GIT_DIR and GIT_WORK_TREE.
As a user, this seems wrong.
It looks like the "require_work_tree" function should check the environment variables in addition to the status of the PWD (via git-rev-parse).
Having looked through several of the other git-*.sh scripts, I think other shell based git commands will have similar problems.
Thanks,
Aaron