Skip to content

Commit

Permalink
[PATCH] Fix "git-local-fetch -s" with packed source repository
Browse files Browse the repository at this point in the history
"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>
  • Loading branch information
Sergey Vlasov authored and Junio C Hamano committed Sep 23, 2005
1 parent 1a95181 commit e2b77f0
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions local-fetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,17 @@ static int copy_file(const char *source, const char *dest, const char *hex)
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;
Expand Down

0 comments on commit e2b77f0

Please sign in to comment.