зеркало из https://github.com/microsoft/git.git
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:
Родитель
26e47f2540
Коммит
348df16679
|
@ -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.
|
||||||
|
|
10
Makefile
10
Makefile
|
@ -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
|
||||||
|
|
7
cache.h
7
cache.h
|
@ -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;
|
||||||
|
|
9
config.c
9
config.c
|
@ -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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче