[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>
This commit is contained in:
Matt Draisey 2005-08-16 01:46:34 -04:00 коммит произвёл Junio C Hamano
Родитель abe0582207
Коммит a7e66ae3f7
1 изменённых файлов: 1 добавлений и 1 удалений

2
refs.c
Просмотреть файл

@ -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);