[PATCH] rename_ref: use lstat(2) when testing for symlink
- From
- Lars Hjemli <hjemli@gmail.com>
- Date
- Nov 29, 2006, 20:44 UTC
- Message-ID
- <11648330963464-git-send-email-hjemli@gmail.com>
The current check for symlinked reflogs was based on stat(2), which is utterly embarrassing.
Fix it, and add a matching testcase.
Signed-off-by: Lars Hjemli <hjemli@gmail.com> ---
This is on top of my previous [RFC], which is kind of strange, but I hope it wasn't dropped on the floor...
refs.c | 2 +- t/t3200-branch.sh | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/refs.c b/refs.c index 479f18c..d8c19e6 100644 --- a/refs.c +++ b/refs.c @@ -792,7 +792,7 @@ int rename_ref(const char *oldref, const char *newref) struct ref_lock *lock; char msg[PATH_MAX*2 + 100]; struct stat loginfo; - int log = !stat(git_path("logs/%s", oldref), &loginfo); + int log = !lstat(git_path("logs/%s", oldref), &loginfo); if (S_ISLNK(loginfo.st_mode)) return error("reflog for %s is a symlink", oldref); diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index afaa853..5782c30 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -104,4 +104,11 @@ test_expect_success \ git-branch -m s/s s && test -f .git/logs/refs/heads/s' +test_expect_failure \ + 'git-branch -m u v should fail when the reflog for u is a symlink' \ + 'git-branch -l u && + mv .git/logs/refs/heads/u real-u && + ln -s real-u .git/logs/refs/heads/u && + git-branch -m u v' + test_done
-- 1.4.4.1.gf0df