Thanks to visit codestin.com
Credit goes to Github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -879,14 +879,6 @@ const char *git_attr_system_file(void)
return system_wide;
}

const char *git_attr_global_file(void)
{
if (!git_attributes_file)
git_attributes_file = xdg_config_home("attributes");

return git_attributes_file;
}

int git_attr_system_is_enabled(void)
{
return !git_env_bool("GIT_ATTR_NOSYSTEM", 0);
Expand All @@ -912,6 +904,8 @@ static void bootstrap_attr_stack(struct index_state *istate,
{
struct attr_stack *e;
unsigned flags = READ_ATTR_MACRO_OK;
const char *attributes_file_path;
struct repository *repo;

if (*stack)
return;
Expand All @@ -927,8 +921,13 @@ static void bootstrap_attr_stack(struct index_state *istate,
}

/* home directory */
if (git_attr_global_file()) {
e = read_attr_from_file(git_attr_global_file(), flags);
if (istate && istate->repo)
repo = istate->repo;
else
repo = the_repository;
attributes_file_path = repo_settings_get_attributesfile_path(repo);
if (attributes_file_path) {
e = read_attr_from_file(attributes_file_path, flags);
push_stack(stack, e, NULL, 0);
}

Expand Down
3 changes: 0 additions & 3 deletions attr.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,9 +232,6 @@ void attr_start(void);
/* Return the system gitattributes file. */
const char *git_attr_system_file(void);

/* Return the global gitattributes file, if any. */
const char *git_attr_global_file(void);

/* Return whether the system gitattributes file is enabled and should be used. */
int git_attr_system_is_enabled(void);

Expand Down
2 changes: 1 addition & 1 deletion builtin/var.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ static char *git_attr_val_system(int ident_flag UNUSED)

static char *git_attr_val_global(int ident_flag UNUSED)
{
char *file = xstrdup_or_null(git_attr_global_file());
char *file = xstrdup_or_null(repo_settings_get_attributesfile_path(the_repository));
if (file) {
normalize_path_copy(file, file);
return file;
Expand Down
6 changes: 0 additions & 6 deletions environment.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ char *git_commit_encoding;
char *git_log_output_encoding;
char *apply_default_whitespace;
char *apply_default_ignorewhitespace;
char *git_attributes_file;
int zlib_compression_level = Z_BEST_SPEED;
int pack_compression_level = Z_DEFAULT_COMPRESSION;
int fsync_object_files = -1;
Expand Down Expand Up @@ -363,11 +362,6 @@ static int git_default_core_config(const char *var, const char *value,
return 0;
}

if (!strcmp(var, "core.attributesfile")) {
FREE_AND_NULL(git_attributes_file);
return git_config_pathname(&git_attributes_file, var, value);
}

if (!strcmp(var, "core.bare")) {
is_bare_repository_cfg = git_config_bool(var, value);
return 0;
Expand Down
1 change: 0 additions & 1 deletion environment.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ extern int assume_unchanged;
extern int warn_on_object_refname_ambiguity;
extern char *apply_default_whitespace;
extern char *apply_default_ignorewhitespace;
extern char *git_attributes_file;
extern int zlib_compression_level;
extern int pack_compression_level;
extern unsigned long pack_size_limit_cfg;
Expand Down
10 changes: 10 additions & 0 deletions repo-settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "midx.h"
#include "pack-objects.h"
#include "setup.h"
#include "path.h"

static void repo_cfg_bool(struct repository *r, const char *key, int *dest,
int def)
Expand Down Expand Up @@ -158,6 +159,7 @@ void repo_settings_clear(struct repository *r)
struct repo_settings empty = REPO_SETTINGS_INIT;
FREE_AND_NULL(r->settings.fsmonitor);
FREE_AND_NULL(r->settings.hooks_path);
FREE_AND_NULL(r->settings.git_attributes_file);
r->settings = empty;
}

Expand Down Expand Up @@ -230,3 +232,11 @@ void repo_settings_reset_shared_repository(struct repository *repo)
{
repo->settings.shared_repository_initialized = 0;
}
const char *repo_settings_get_attributesfile_path(struct repository *repo)
{
if (!repo->settings.git_attributes_file) {
if (repo_config_get_pathname(repo, "core.attributesfile", &repo->settings.git_attributes_file))
repo->settings.git_attributes_file = xdg_config_home("attributes");
}
return repo->settings.git_attributes_file;
}
8 changes: 8 additions & 0 deletions repo-settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ struct repo_settings {
unsigned long big_file_threshold;

char *hooks_path;
char *git_attributes_file;
};
#define REPO_SETTINGS_INIT { \
.shared_repository = -1, \
Expand Down Expand Up @@ -99,4 +100,11 @@ int repo_settings_get_shared_repository(struct repository *repo);
void repo_settings_set_shared_repository(struct repository *repo, int value);
void repo_settings_reset_shared_repository(struct repository *repo);

/*
* Read the value for "core.attributesfile".
* Defaults to xdg_config_home("attributes") if the core.attributesfile
* isn't available.
*/
const char *repo_settings_get_attributesfile_path(struct repository *repo);

#endif /* REPO_SETTINGS_H */
Loading