summaryrefslogtreecommitdiff
path: root/builtin-clone.c
diff options
context:
space:
mode:
authorDaniel Barkalow <barkalow@iabervon.org>2008-05-20 18:15:14 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-05-21 18:11:58 (GMT)
commitfdabc242f465771116e08d1ea3737fdb7453b2f1 (patch)
tree0a544d0b791cf9a53298e5f91ad2e5fd0d28e65c /builtin-clone.c
parent689ef4d42e1adf409b632ed5c36beda4852a4720 (diff)
downloadgit-fdabc242f465771116e08d1ea3737fdb7453b2f1.zip
git-fdabc242f465771116e08d1ea3737fdb7453b2f1.tar.gz
git-fdabc242f465771116e08d1ea3737fdb7453b2f1.tar.bz2
clone: fall back to copying if hardlinking fails
Note that it stops trying hardlinks if any fail. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-clone.c')
-rw-r--r--builtin-clone.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/builtin-clone.c b/builtin-clone.c
index 8936a51..2a3f673 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -207,13 +207,15 @@ static void copy_or_link_directory(char *src, char *dest)
if (unlink(dest) && errno != ENOENT)
die("failed to unlink %s\n", dest);
- if (option_no_hardlinks) {
- if (copy_file(dest, src, 0666))
- die("failed to copy file to %s\n", dest);
- } else {
- if (link(src, dest))
+ if (!option_no_hardlinks) {
+ if (!link(src, dest))
+ continue;
+ if (option_local)
die("failed to create link %s\n", dest);
+ option_no_hardlinks = 1;
}
+ if (copy_file(dest, src, 0666))
+ die("failed to copy file to %s\n", dest);
}
closedir(dir);
}