зеркало из https://github.com/microsoft/git.git
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 <jbowes@dangerouslyinc.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
bd1fc628b8
Коммит
896bdfa258
|
@ -12,6 +12,8 @@
|
||||||
static const char builtin_add_usage[] =
|
static const char builtin_add_usage[] =
|
||||||
"git-add [-n] [-v] [-f] [--interactive | -i] [--] <filepattern>...";
|
"git-add [-n] [-v] [-f] [--interactive | -i] [--] <filepattern>...";
|
||||||
|
|
||||||
|
static const char *excludes_file;
|
||||||
|
|
||||||
static void prune_directory(struct dir_struct *dir, const char **pathspec, int prefix)
|
static void prune_directory(struct dir_struct *dir, const char **pathspec, int prefix)
|
||||||
{
|
{
|
||||||
char *seen;
|
char *seen;
|
||||||
|
@ -67,6 +69,8 @@ static void fill_directory(struct dir_struct *dir, const char **pathspec)
|
||||||
path = git_path("info/exclude");
|
path = git_path("info/exclude");
|
||||||
if (!access(path, R_OK))
|
if (!access(path, R_OK))
|
||||||
add_excludes_from_file(dir, path);
|
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
|
* 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);
|
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 struct lock_file lock_file;
|
||||||
|
|
||||||
static const char ignore_warning[] =
|
static const char ignore_warning[] =
|
||||||
|
@ -115,7 +131,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
git_config(git_default_config);
|
git_config(git_add_config);
|
||||||
|
|
||||||
newfd = hold_lock_file_for_update(&lock_file, get_index_file(), 1);
|
newfd = hold_lock_file_for_update(&lock_file, get_index_file(), 1);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче