diff options
author | Matt Draisey <mattdraisey@sympatico.ca> | 2005-08-16 01:46:34 -0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-16 18:33:51 -0700 |
commit | a7e66ae3f70e6e1ae08250d61ff8a968b714754d (patch) | |
tree | 236a911072bcff49390b9c46adb7b0b1f2b9ca3f /refs.c | |
parent | abe0582207c72ec848e78707577c61a98f5c633d (diff) | |
download | git-a7e66ae3f70e6e1ae08250d61ff8a968b714754d.tar.gz git-a7e66ae3f70e6e1ae08250d61ff8a968b714754d.tar.xz |
[PATCH] Make do_each_ref() follow symlinks.
Because there is no reason not to, and this makes things a bit
safer when running "git prune".
[jc: I do not necessarily agree with the reasoning of the
original author that it is a good way to keep "git prune" from
stomping on objects to have a symlink that points at .git/refs
of the repository A in the .git/refs of the repository B when
repository A borrows object database from repository B. For one
thing, the object database that everybody borrows objects from
may not even have its own .git/refs hierarchy. Come to think of
it, maybe we should disallow symlink inside .git/refs hierarchy;
we update the files there by creat/rename pair, so having
symlinks would not work anyway when you do anything that would
update them.]
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -46,7 +46,7 @@ static int do_for_each_ref(const char *base, int (*fn)(const char *path, const u if (namelen > 255) continue; memcpy(path + baselen, de->d_name, namelen+1); - if (lstat(git_path("%s", path), &st) < 0) + if (stat(git_path("%s", path), &st) < 0) continue; if (S_ISDIR(st.st_mode)) { retval = do_for_each_ref(path, fn); |