aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorOlivier Marin <dkr@freesurf.fr>2008-07-19 18:24:46 +0200
committerJunio C Hamano <gitster@pobox.com>2008-07-19 10:41:17 -0700
commit4d2646727997c82c04a82ce38e56d76e7b5d268b (patch)
treeae5c784cdd0412d039b6981cfb6c89aa61753a3c /t
parentfcf74dbfca9738a724995c92f0845e8018e51a0e (diff)
downloadgit-4d2646727997c82c04a82ce38e56d76e7b5d268b.tar.gz
git-4d2646727997c82c04a82ce38e56d76e7b5d268b.tar.xz
builtin-rm: fix index lock file path
When hold_locked_index() is called with a relative git_dir and you are outside the work tree, the lock file become relative to the current directory. So when later setup_work_tree() change the current directory it breaks lock file path and commit_locked_index() fails. This patch move index locking code after setup_work_tree() call to make lock file relative to the working tree as it should be and add a test case. Noticed by Nick Andrew. Signed-off-by: Olivier Marin <dkr@freesurf.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/t3600-rm.sh12
1 files changed, 12 insertions, 0 deletions
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index f542f0af4..7893d8c40 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -217,4 +217,16 @@ test_expect_success 'Remove nonexistent file returns nonzero exit status' '
! git rm nonexistent
'
+test_expect_success 'Call "rm" from outside the work tree' '
+ mkdir repo &&
+ cd repo &&
+ git init &&
+ echo something > somefile &&
+ git add somefile &&
+ git commit -m "add a file" &&
+ (cd .. &&
+ git --git-dir=repo/.git --work-tree=repo rm somefile) &&
+ test_must_fail git ls-files --error-unmatch somefile
+'
+
test_done