Code

git stash: show status relative to current directory
authorPiotr Krukowiecki <piotr.krukowiecki@gmail.com>
Sat, 12 Mar 2011 08:57:46 +0000 (09:57 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Mar 2011 07:28:37 +0000 (00:28 -0700)
git status shows modified paths relative to current directory, so it's
possible to copy&paste them directly, even if you're in a subdirectory.

But "git stash apply" always shows status from root of git repository.
This is misleading because you can't use the paths without modifications.

This is caused by changing directory to root of repository at the
beginning of git stash.

This patch makes git stash show status relative to current directory.
Instead of removing the "cd to toplevel", which would affect whole
script and might have other side-effects, the fix is to change directory
temporarily back to original dir just before displaying status.

Signed-off-by: Piotr Krukowiecki <piotr.krukowiecki@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-stash.sh

index 7561b374d2ec90fe774e98e39a121a1a3a3cdfa9..b59c2011626d44f81f4d25b9ae5289f48d9f0b9d 100755 (executable)
@@ -12,6 +12,7 @@ USAGE="list [<options>]
 
 SUBDIRECTORY_OK=Yes
 OPTIONS_SPEC=
+START_DIR=`pwd`
 . git-sh-setup
 require_work_tree
 cd_to_toplevel
@@ -394,7 +395,7 @@ apply_stash () {
                then
                        squelch='>/dev/null 2>&1'
                fi
-               eval "git status $squelch" || :
+               (cd "$START_DIR" && eval "git status $squelch") || :
        else
                # Merge conflict; keep the exit status from merge-recursive
                status=$?