зеркало из https://github.com/microsoft/git.git
Merge branch 'lt/config-fsync'
* lt/config-fsync: Add config option to enable 'fsync()' of object files Split up default "i18n" and "branch" config parsing into helper routines Split up default "user" config parsing into helper routine Split up default "core" config parsing into helper routine
This commit is contained in:
Коммит
abf7e0df17
|
@ -372,6 +372,14 @@ core.whitespace::
|
|||
does not trigger if the character before such a carriage-return
|
||||
is not a whitespace (not enabled by default).
|
||||
|
||||
core.fsyncobjectfiles::
|
||||
This boolean will enable 'fsync()' when writing object files.
|
||||
+
|
||||
This is a total waste of time and effort on a filesystem that orders
|
||||
data writes properly, but can be useful for filesystems that do not use
|
||||
journalling (traditional UNIX filesystems) or that only journal metadata
|
||||
and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
|
||||
|
||||
alias.*::
|
||||
Command aliases for the linkgit:git[1] command wrapper - e.g.
|
||||
after defining "alias.last = cat-file commit HEAD", the invocation
|
||||
|
|
1
cache.h
1
cache.h
|
@ -434,6 +434,7 @@ extern size_t packed_git_window_size;
|
|||
extern size_t packed_git_limit;
|
||||
extern size_t delta_base_cache_limit;
|
||||
extern int auto_crlf;
|
||||
extern int fsync_object_files;
|
||||
|
||||
enum safe_crlf {
|
||||
SAFE_CRLF_FALSE = 0,
|
||||
|
|
82
config.c
82
config.c
|
@ -332,7 +332,7 @@ int git_config_string(const char **dest, const char *var, const char *value)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int git_default_config(const char *var, const char *value, void *dummy)
|
||||
static int git_default_core_config(const char *var, const char *value)
|
||||
{
|
||||
/* This needs a better name */
|
||||
if (!strcmp(var, "core.filemode")) {
|
||||
|
@ -444,6 +444,33 @@ int git_default_config(const char *var, const char *value, void *dummy)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "core.pager"))
|
||||
return git_config_string(&pager_program, var, value);
|
||||
|
||||
if (!strcmp(var, "core.editor"))
|
||||
return git_config_string(&editor_program, var, value);
|
||||
|
||||
if (!strcmp(var, "core.excludesfile"))
|
||||
return git_config_string(&excludes_file, var, value);
|
||||
|
||||
if (!strcmp(var, "core.whitespace")) {
|
||||
if (!value)
|
||||
return config_error_nonbool(var);
|
||||
whitespace_rule_cfg = parse_whitespace_rule(value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "core.fsyncobjectfiles")) {
|
||||
fsync_object_files = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Add other config variables here and to Documentation/config.txt. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int git_default_user_config(const char *var, const char *value)
|
||||
{
|
||||
if (!strcmp(var, "user.name")) {
|
||||
if (!value)
|
||||
return config_error_nonbool(var);
|
||||
|
@ -462,32 +489,24 @@ int git_default_config(const char *var, const char *value, void *dummy)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Add other config variables here and to Documentation/config.txt. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int git_default_i18n_config(const char *var, const char *value)
|
||||
{
|
||||
if (!strcmp(var, "i18n.commitencoding"))
|
||||
return git_config_string(&git_commit_encoding, var, value);
|
||||
|
||||
if (!strcmp(var, "i18n.logoutputencoding"))
|
||||
return git_config_string(&git_log_output_encoding, var, value);
|
||||
|
||||
if (!strcmp(var, "pager.color") || !strcmp(var, "color.pager")) {
|
||||
pager_use_color = git_config_bool(var,value);
|
||||
return 0;
|
||||
}
|
||||
/* Add other config variables here and to Documentation/config.txt. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "core.pager"))
|
||||
return git_config_string(&pager_program, var, value);
|
||||
|
||||
if (!strcmp(var, "core.editor"))
|
||||
return git_config_string(&editor_program, var, value);
|
||||
|
||||
if (!strcmp(var, "core.excludesfile"))
|
||||
return git_config_string(&excludes_file, var, value);
|
||||
|
||||
if (!strcmp(var, "core.whitespace")) {
|
||||
if (!value)
|
||||
return config_error_nonbool(var);
|
||||
whitespace_rule_cfg = parse_whitespace_rule(value);
|
||||
return 0;
|
||||
}
|
||||
static int git_default_branch_config(const char *var, const char *value)
|
||||
{
|
||||
if (!strcmp(var, "branch.autosetupmerge")) {
|
||||
if (value && !strcasecmp(value, "always")) {
|
||||
git_branch_track = BRANCH_TRACK_ALWAYS;
|
||||
|
@ -516,6 +535,29 @@ int git_default_config(const char *var, const char *value, void *dummy)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int git_default_config(const char *var, const char *value, void *dummy)
|
||||
{
|
||||
if (!prefixcmp(var, "core."))
|
||||
return git_default_core_config(var, value);
|
||||
|
||||
if (!prefixcmp(var, "user."))
|
||||
return git_default_user_config(var, value);
|
||||
|
||||
if (!prefixcmp(var, "i18n."))
|
||||
return git_default_i18n_config(var, value);
|
||||
|
||||
if (!prefixcmp(var, "branch."))
|
||||
return git_default_branch_config(var, value);
|
||||
|
||||
if (!strcmp(var, "pager.color") || !strcmp(var, "color.pager")) {
|
||||
pager_use_color = git_config_bool(var,value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Add other config variables here and to Documentation/config.txt. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int git_config_from_file(config_fn_t fn, const char *filename, void *data)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -29,6 +29,7 @@ const char *apply_default_whitespace;
|
|||
int zlib_compression_level = Z_BEST_SPEED;
|
||||
int core_compression_level;
|
||||
int core_compression_seen;
|
||||
int fsync_object_files;
|
||||
size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
|
||||
size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
|
||||
size_t delta_base_cache_limit = 16 * 1024 * 1024;
|
||||
|
|
|
@ -2149,7 +2149,8 @@ int hash_sha1_file(const void *buf, unsigned long len, const char *type,
|
|||
/* Finalize a file on disk, and close it. */
|
||||
static void close_sha1_file(int fd)
|
||||
{
|
||||
/* For safe-mode, we could fsync_or_die(fd, "sha1 file") here */
|
||||
if (fsync_object_files)
|
||||
fsync_or_die(fd, "sha1 file");
|
||||
fchmod(fd, 0444);
|
||||
if (close(fd) != 0)
|
||||
die("unable to write sha1 file");
|
||||
|
|
Загрузка…
Ссылка в новой задаче