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 /t | |
parent | 91af7ae54f2a0af453c3a5ac612ed613b38b4fdf (diff) | |
download | git-cf1b7869f0c571bbd4f72a4355d9aca558baa0da.tar.gz git-cf1b7869f0c571bbd4f72a4355d9aca558baa0da.tar.xz |
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 't')
-rwxr-xr-x | t/t4019-diff-wserror.sh | 47 | ||||
-rwxr-xr-x | t/t4124-apply-ws-rule.sh | 20 |
2 files changed, 66 insertions, 1 deletions
diff --git a/t/t4019-diff-wserror.sh b/t/t4019-diff-wserror.sh index dbc895b9b..67e080bdb 100755 --- a/t/t4019-diff-wserror.sh +++ b/t/t4019-diff-wserror.sh @@ -45,8 +45,24 @@ test_expect_success 'without -trail' ' ' +test_expect_success 'without -trail (attribute)' ' + + git config --unset core.whitespace + echo "F whitespace=-trail" >.gitattributes + git diff --color >output + grep "$blue_grep" output >error + grep -v "$blue_grep" output >normal + + grep Eight normal >/dev/null && + grep HT error >/dev/null && + grep With normal >/dev/null && + grep No normal >/dev/null + +' + test_expect_success 'without -space' ' + rm -f .gitattributes git config core.whitespace -space git diff --color >output grep "$blue_grep" output >error @@ -59,8 +75,24 @@ test_expect_success 'without -space' ' ' +test_expect_success 'without -space (attribute)' ' + + git config --unset core.whitespace + echo "F whitespace=-space" >.gitattributes + git diff --color >output + grep "$blue_grep" output >error + grep -v "$blue_grep" output >normal + + grep Eight normal >/dev/null && + grep HT normal >/dev/null && + grep With error >/dev/null && + grep No normal >/dev/null + +' + test_expect_success 'with indent-non-tab only' ' + rm -f .gitattributes git config core.whitespace indent,-trailing,-space git diff --color >output grep "$blue_grep" output >error @@ -73,4 +105,19 @@ test_expect_success 'with indent-non-tab only' ' ' +test_expect_success 'with indent-non-tab only (attribute)' ' + + git config --unset core.whitespace + echo "F whitespace=indent,-trailing,-space" >.gitattributes + git diff --color >output + grep "$blue_grep" output >error + grep -v "$blue_grep" output >normal + + grep Eight error >/dev/null && + grep HT normal >/dev/null && + grep With normal >/dev/null && + grep No normal >/dev/null + +' + test_done diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh index f53ac466d..85f3da2b9 100755 --- a/t/t4124-apply-ws-rule.sh +++ b/t/t4124-apply-ws-rule.sh @@ -112,6 +112,15 @@ test_expect_success 'whitespace=error-all, no rule' ' ' +test_expect_success 'whitespace=error-all, no rule (attribute)' ' + + git config --unset core.whitespace && + echo "target -whitespace" >.gitattributes && + apply_patch --whitespace=error-all && + diff file target + +' + for t in - '' do case "$t" in '') tt='!' ;; *) tt= ;; esac @@ -121,11 +130,20 @@ do for i in - '' do case "$i" in '') ti='#' ;; *) ti= ;; esac - rule=${t}trailing,${s}space,${i}indent && + rule=${t}trailing,${s}space,${i}indent + + rm -f .gitattributes test_expect_success "rule=$rule" ' git config core.whitespace "$rule" && test_fix "$tt$ts$ti" ' + + test_expect_success "rule=$rule (attributes)" ' + git config --unset core.whitespace && + echo "target whitespace=$rule" >.gitattributes && + test_fix "$tt$ts$ti" + ' + done done done |