diff --git a/sha1_file.c b/sha1_file.c
index 8fe135dc61908103cf2d7de700794843f83db057..f708cf4f674fdf393044d6c36c7d97f1fa7dcd0c 100644 (file)
--- a/sha1_file.c
+++ b/sha1_file.c
{
int ret = 0;
- if (link(tmpfile, filename))
+ if (object_creation_mode == OBJECT_CREATION_USES_RENAMES)
+ goto try_rename;
+ else if (link(tmpfile, filename))
ret = errno;
/*
* left to unlink.
*/
if (ret && ret != EEXIST) {
+ try_rename:
if (!rename(tmpfile, filename))
goto out;
ret = errno;