Rename core.unreliableHardlinks to core.createObject

"Unreliable hardlinks" is a misleading description for what is happening.
So rename it to something less misleading.

Suggested by Linus Torvalds.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2009-04-28 00:32:25 +02:00 коммит произвёл Junio C Hamano
Родитель 26e47f2540
Коммит 348df16679
6 изменённых файлов: 30 добавлений и 16 удалений

Просмотреть файл

@ -429,10 +429,14 @@ relatively high IO latencies. With this set to 'true', git will do the
index comparison to the filesystem data in parallel, allowing index comparison to the filesystem data in parallel, allowing
overlapping IO's. overlapping IO's.
core.unreliableHardlinks:: core.createObject::
Some filesystem drivers cannot properly handle hardlinking a file You can set this to 'link', in which case a hardlink followed by
and deleting the source right away. In such a case, you need to a delete of the source are used to make sure that object creation
set this config variable to 'true'. will not overwrite existing objects.
+
On some file system/operating system combinations, this is unreliable.
Set this config setting to 'rename' there; However, This will remove the
check that makes sure that existing object files will not get overwritten.
alias.*:: alias.*::
Command aliases for the linkgit:git[1] command wrapper - e.g. Command aliases for the linkgit:git[1] command wrapper - e.g.

Просмотреть файл

@ -172,8 +172,8 @@ all::
# information on a not yet closed file that lstat would return for the same # information on a not yet closed file that lstat would return for the same
# file after it was closed. # file after it was closed.
# #
# Define UNRELIABLE_HARDLINKS if your operating systems has problems when # Define OBJECT_CREATION_USES_RENAMES if your operating systems has problems
# hardlinking a file to another name and unlinking the original file right # when hardlinking a file to another name and unlinking the original file right
# away (some NTFS drivers seem to zero the contents in that scenario). # away (some NTFS drivers seem to zero the contents in that scenario).
GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
@ -837,7 +837,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
NO_NSEC = YesPlease NO_NSEC = YesPlease
USE_WIN32_MMAP = YesPlease USE_WIN32_MMAP = YesPlease
UNRELIABLE_FSTAT = UnfortunatelyYes UNRELIABLE_FSTAT = UnfortunatelyYes
UNRELIABLE_HARDLINKS = UnfortunatelySometimes OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/regex -Icompat/fnmatch COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/regex -Icompat/fnmatch
COMPAT_CFLAGS += -DSNPRINTF_SIZE_CORR=1 COMPAT_CFLAGS += -DSNPRINTF_SIZE_CORR=1
COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
@ -1021,8 +1021,8 @@ else
COMPAT_OBJS += compat/win32mmap.o COMPAT_OBJS += compat/win32mmap.o
endif endif
endif endif
ifdef UNRELIABLE_HARDLINKS ifdef OBJECT_CREATION_USES_RENAMES
COMPAT_CFLAGS += -DUNRELIABLE_HARDLINKS=1 COMPAT_CFLAGS += -DOBJECT_CREATION_MODE=1
endif endif
ifdef NO_PREAD ifdef NO_PREAD
COMPAT_CFLAGS += -DNO_PREAD COMPAT_CFLAGS += -DNO_PREAD

Просмотреть файл

@ -554,7 +554,12 @@ extern enum branch_track git_branch_track;
extern enum rebase_setup_type autorebase; extern enum rebase_setup_type autorebase;
extern enum push_default_type push_default; extern enum push_default_type push_default;
extern int unreliable_hardlinks; enum object_creation_mode {
OBJECT_CREATION_USES_HARDLINKS = 0,
OBJECT_CREATION_USES_RENAMES = 1,
};
extern enum object_creation_mode object_creation_mode;
#define GIT_REPO_VERSION 0 #define GIT_REPO_VERSION 0
extern int repository_format_version; extern int repository_format_version;

Просмотреть файл

@ -495,8 +495,13 @@ static int git_default_core_config(const char *var, const char *value)
return 0; return 0;
} }
if (!strcmp(var, "core.unreliablehardlinks")) { if (!strcmp(var, "core.createobject")) {
unreliable_hardlinks = git_config_bool(var, value); if (!strcmp(value, "rename"))
object_creation_mode = OBJECT_CREATION_USES_RENAMES;
else if (!strcmp(value, "link"))
object_creation_mode = OBJECT_CREATION_USES_HARDLINKS;
else
die("Invalid mode for object creation: %s", value);
return 0; return 0;
} }

Просмотреть файл

@ -43,10 +43,10 @@ unsigned whitespace_rule_cfg = WS_DEFAULT_RULE;
enum branch_track git_branch_track = BRANCH_TRACK_REMOTE; enum branch_track git_branch_track = BRANCH_TRACK_REMOTE;
enum rebase_setup_type autorebase = AUTOREBASE_NEVER; enum rebase_setup_type autorebase = AUTOREBASE_NEVER;
enum push_default_type push_default = PUSH_DEFAULT_UNSPECIFIED; enum push_default_type push_default = PUSH_DEFAULT_UNSPECIFIED;
#ifndef UNRELIABLE_HARDLINKS #ifndef OBJECT_CREATION_MODE
#define UNRELIABLE_HARDLINKS 0 #define OBJECT_CREATION_MODE OBJECT_CREATION_USES_HARDLINKS
#endif #endif
int unreliable_hardlinks = UNRELIABLE_HARDLINKS; enum object_creation_mode object_creation_mode = OBJECT_CREATION_MODE;
/* Parallel index stat data preload? */ /* Parallel index stat data preload? */
int core_preload_index = 0; int core_preload_index = 0;

Просмотреть файл

@ -2225,7 +2225,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
{ {
int ret = 0; int ret = 0;
if (unreliable_hardlinks) if (object_creation_mode == OBJECT_CREATION_USES_RENAMES)
goto try_rename; goto try_rename;
else if (link(tmpfile, filename)) else if (link(tmpfile, filename))
ret = errno; ret = errno;