summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1a95181)
raw | patch | inline | side by side (parent: 1a95181)
author | Sergey Vlasov <vsu@altlinux.ru> | |
Fri, 23 Sep 2005 12:28:33 +0000 (16:28 +0400) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Fri, 23 Sep 2005 21:30:45 +0000 (14:30 -0700) |
"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>
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>
local-fetch.c | patch | blob | history |
diff --git a/local-fetch.c b/local-fetch.c
index a3e35f9c81730ec149bf37cb19d7dbb4570a3197..6216c68a4cc64b90efc66fb6dd26065b1939e91c 100644 (file)
--- a/local-fetch.c
+++ b/local-fetch.c
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;