diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2009-04-28 00:32:25 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-04-29 16:50:07 -0700 |
commit | 348df16679cf35b7bba7afea99638e7d81dc3d33 (patch) | |
tree | 81bd57136af669f74c387061e6cd3dd502e23882 | |
parent | 26e47f25402ad51c6cfa1cd784a3431dd00deeb2 (diff) | |
download | git-348df16679cf35b7bba7afea99638e7d81dc3d33.tar.gz git-348df16679cf35b7bba7afea99638e7d81dc3d33.tar.xz |
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>
-rw-r--r-- | Documentation/config.txt | 12 | ||||
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | cache.h | 7 | ||||
-rw-r--r-- | config.c | 9 | ||||
-rw-r--r-- | environment.c | 6 | ||||
-rw-r--r-- | sha1_file.c | 2 |
6 files changed, 30 insertions, 16 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index d31adb671..5dcad94f8 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -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 overlapping IO's. -core.unreliableHardlinks:: - Some filesystem drivers cannot properly handle hardlinking a file - and deleting the source right away. In such a case, you need to - set this config variable to 'true'. +core.createObject:: + You can set this to 'link', in which case a hardlink followed by + a delete of the source are used to make sure that object creation + 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.*:: 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 # file after it was closed. # -# Define UNRELIABLE_HARDLINKS if your operating systems has problems when -# hardlinking a file to another name and unlinking the original file right +# Define OBJECT_CREATION_USES_RENAMES if your operating systems has problems +# 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). GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE @@ -837,7 +837,7 @@ ifneq (,$(findstring MINGW,$(uname_S))) NO_NSEC = YesPlease USE_WIN32_MMAP = YesPlease 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 += -DSNPRINTF_SIZE_CORR=1 COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" @@ -1021,8 +1021,8 @@ else COMPAT_OBJS += compat/win32mmap.o endif endif -ifdef UNRELIABLE_HARDLINKS - COMPAT_CFLAGS += -DUNRELIABLE_HARDLINKS=1 +ifdef OBJECT_CREATION_USES_RENAMES + COMPAT_CFLAGS += -DOBJECT_CREATION_MODE=1 endif ifdef NO_PREAD COMPAT_CFLAGS += -DNO_PREAD @@ -554,7 +554,12 @@ extern enum branch_track git_branch_track; extern enum rebase_setup_type autorebase; 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 extern int repository_format_version; @@ -495,8 +495,13 @@ static int git_default_core_config(const char *var, const char *value) return 0; } - if (!strcmp(var, "core.unreliablehardlinks")) { - unreliable_hardlinks = git_config_bool(var, value); + if (!strcmp(var, "core.createobject")) { + 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; } diff --git a/environment.c b/environment.c index 10578d24d..801a005ef 100644 --- a/environment.c +++ b/environment.c @@ -43,10 +43,10 @@ unsigned whitespace_rule_cfg = WS_DEFAULT_RULE; enum branch_track git_branch_track = BRANCH_TRACK_REMOTE; enum rebase_setup_type autorebase = AUTOREBASE_NEVER; enum push_default_type push_default = PUSH_DEFAULT_UNSPECIFIED; -#ifndef UNRELIABLE_HARDLINKS -#define UNRELIABLE_HARDLINKS 0 +#ifndef OBJECT_CREATION_MODE +#define OBJECT_CREATION_MODE OBJECT_CREATION_USES_HARDLINKS #endif -int unreliable_hardlinks = UNRELIABLE_HARDLINKS; +enum object_creation_mode object_creation_mode = OBJECT_CREATION_MODE; /* Parallel index stat data preload? */ int core_preload_index = 0; diff --git a/sha1_file.c b/sha1_file.c index 11969fc16..f708cf4f6 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2225,7 +2225,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename) { int ret = 0; - if (unreliable_hardlinks) + if (object_creation_mode == OBJECT_CREATION_USES_RENAMES) goto try_rename; else if (link(tmpfile, filename)) ret = errno; |