From 896bdfa2581f96d3df9a312510c39ce7d80790cd Mon Sep 17 00:00:00 2001 From: James Bowes Date: Tue, 27 Feb 2007 22:31:10 -0500 Subject: [PATCH] add: Support specifying an excludes file with a configuration variable This adds the 'core.excludesfile' configuration variable. This variable can hold a path to a file containing patterns of file names to exclude from git-add, like $GIT_DIR/info/exclude. Patterns in the excludes file are used in addition to those in info/exclude. Signed-off-by: James Bowes Signed-off-by: Junio C Hamano --- builtin-add.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/builtin-add.c b/builtin-add.c index 87e16aa22..9fcf514db 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -12,6 +12,8 @@ static const char builtin_add_usage[] = "git-add [-n] [-v] [-f] [--interactive | -i] [--] ..."; +static const char *excludes_file; + static void prune_directory(struct dir_struct *dir, const char **pathspec, int prefix) { char *seen; @@ -67,6 +69,8 @@ static void fill_directory(struct dir_struct *dir, const char **pathspec) path = git_path("info/exclude"); if (!access(path, R_OK)) add_excludes_from_file(dir, path); + if (!access(excludes_file, R_OK)) + add_excludes_from_file(dir, excludes_file); /* * Calculate common prefix for the pathspec, and @@ -88,6 +92,18 @@ static void fill_directory(struct dir_struct *dir, const char **pathspec) prune_directory(dir, pathspec, baselen); } +static int git_add_config(const char *var, const char *value) +{ + if (!strcmp(var, "core.excludesfile")) { + if (!value) + die("core.excludesfile without value"); + excludes_file = xstrdup(value); + return 0; + } + + return git_default_config(var, value); +} + static struct lock_file lock_file; static const char ignore_warning[] = @@ -115,7 +131,7 @@ int cmd_add(int argc, const char **argv, const char *prefix) exit(1); } - git_config(git_default_config); + git_config(git_add_config); newfd = hold_lock_file_for_update(&lock_file, get_index_file(), 1); -- 2.30.2