"git-local-fetch -s" did not work with a packed repository, because
symlink() happily created a link to a non-existing object file,
therefore fetch_file() always returned success, and fetch_pack() was
not called. Fixed by calling stat() before symlink() to ensure the
file really exists.
Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Signed-off-by: Junio C Hamano <junkio@cox.net>
return -1;
}
}
- if (use_symlink && !symlink(source, dest)) {
- pull_say("symlink %s\n", hex);
- return 0;
+ if (use_symlink) {
+ struct stat st;
+ if (stat(source, &st)) {
+ fprintf(stderr, "cannot stat %s: %s\n", source,
+ strerror(errno));
+ return -1;
+ }
+ if (!symlink(source, dest)) {
+ pull_say("symlink %s\n", hex);
+ return 0;
+ }
}
if (use_filecopy) {
int ifd, ofd, status;