diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-12-06 00:14:14 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-06 00:45:30 -0800 |
commit | cf1b7869f0c571bbd4f72a4355d9aca558baa0da (patch) | |
tree | b299d53c5f9a2a8be72f819e26f49421ed6c45bc /config.c | |
parent | 91af7ae54f2a0af453c3a5ac612ed613b38b4fdf (diff) | |
download | git-cf1b7869f0c571bbd4f72a4355d9aca558baa0da.tar.gz |
Use gitattributes to define per-path whitespace rule
The `core.whitespace` configuration variable allows you to define what
`diff` and `apply` should consider whitespace errors for all paths in
the project (See gitlink:git-config[1]). This attribute gives you finer
control per path.
For example, if you have these in the .gitattributes:
frotz whitespace
nitfol -whitespace
xyzzy whitespace=-trailing
all types of whitespace problems known to git are noticed in path 'frotz'
(i.e. diff shows them in diff.whitespace color, and apply warns about
them), no whitespace problem is noticed in path 'nitfol', and the
default types of whitespace problems except "trailing whitespace" are
noticed for path 'xyzzy'. A project with mixed Python and C might want
to have:
*.c whitespace
*.py whitespace=-indent-with-non-tab
in its toplevel .gitattributes file.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 50 |
1 files changed, 1 insertions, 49 deletions
@@ -246,54 +246,6 @@ static unsigned long get_unit_factor(const char *end) die("unknown unit: '%s'", end); } -static struct whitespace_rule { - const char *rule_name; - unsigned rule_bits; -} whitespace_rule_names[] = { - { "trailing-space", WS_TRAILING_SPACE }, - { "space-before-tab", WS_SPACE_BEFORE_TAB }, - { "indent-with-non-tab", WS_INDENT_WITH_NON_TAB }, -}; - -static unsigned parse_whitespace_rule(const char *string) -{ - unsigned rule = WS_DEFAULT_RULE; - - while (string) { - int i; - size_t len; - const char *ep; - int negated = 0; - - string = string + strspn(string, ", \t\n\r"); - ep = strchr(string, ','); - if (!ep) - len = strlen(string); - else - len = ep - string; - - if (*string == '-') { - negated = 1; - string++; - len--; - } - if (!len) - break; - for (i = 0; i < ARRAY_SIZE(whitespace_rule_names); i++) { - if (strncmp(whitespace_rule_names[i].rule_name, - string, len)) - continue; - if (negated) - rule &= ~whitespace_rule_names[i].rule_bits; - else - rule |= whitespace_rule_names[i].rule_bits; - break; - } - string = ep; - } - return rule; -} - int git_parse_long(const char *value, long *ret) { if (value && *value) { @@ -480,7 +432,7 @@ int git_default_config(const char *var, const char *value) } if (!strcmp(var, "core.whitespace")) { - whitespace_rule = parse_whitespace_rule(value); + whitespace_rule_cfg = parse_whitespace_rule(value); return 0; } |