From 969f9d73228f233aff071a0d07ba28afdb79dbc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m?= Date: Tue, 6 Apr 2010 14:46:43 +0200 Subject: attr: Allow multiple changes to an attribute on the same line. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using macros it isn't inconceivable to have an attribute being set by a macro, and then being reset explicitly. Signed-off-by: Henrik Grubbström Signed-off-by: Junio C Hamano --- t/t0003-attributes.sh | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 't/t0003-attributes.sh') diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh index 1c77192eb3..bd9c8deb4c 100755 --- a/t/t0003-attributes.sh +++ b/t/t0003-attributes.sh @@ -22,6 +22,8 @@ test_expect_success 'setup' ' ( echo "f test=f" echo "a/i test=a/i" + echo "onoff test -test" + echo "offon -test test" ) >.gitattributes && ( echo "g test=a/g" && @@ -44,6 +46,8 @@ test_expect_success 'attribute test' ' attr_check b/g unspecified && attr_check a/b/h a/b/h && attr_check a/b/d/g "a/b/d/*" + attr_check onoff unset + attr_check offon set ' @@ -58,6 +62,8 @@ a/b/g: test: a/b/g b/g: test: unspecified a/b/h: test: a/b/h a/b/d/g: test: a/b/d/* +onoff: test: unset +offon: test: set EOF sed -e "s/:.*//" < expect | git check-attr --stdin test > actual && -- cgit v1.2.1 From ec775c41dc4bb7382ebbbb61ede59e63846b3644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m?= Date: Tue, 6 Apr 2010 14:46:44 +0200 Subject: attr: Expand macros immediately when encountered. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using macros it is otherwise hard to know whether an attribute set by the macro should override an already set attribute. Consider the following .gitattributes file: [attr]mybinary binary -ident * ident foo.bin mybinary bar.bin mybinary ident Without this patch both foo.bin and bar.bin will have the ident attribute set, which is probably not what the user expects. With this patch foo.bin will have an unset ident attribute, while bar.bin will have it set. Signed-off-by: Henrik Grubbström Signed-off-by: Junio C Hamano --- t/t0003-attributes.sh | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 't/t0003-attributes.sh') diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh index bd9c8deb4c..53bd7fcc4a 100755 --- a/t/t0003-attributes.sh +++ b/t/t0003-attributes.sh @@ -20,10 +20,12 @@ test_expect_success 'setup' ' mkdir -p a/b/d a/c && ( + echo "[attr]notest !test" echo "f test=f" echo "a/i test=a/i" echo "onoff test -test" echo "offon -test test" + echo "no notest" ) >.gitattributes && ( echo "g test=a/g" && @@ -32,6 +34,7 @@ test_expect_success 'setup' ' ( echo "h test=a/b/h" && echo "d/* test=a/b/d/*" + echo "d/yes notest" ) >a/b/.gitattributes ' @@ -48,6 +51,9 @@ test_expect_success 'attribute test' ' attr_check a/b/d/g "a/b/d/*" attr_check onoff unset attr_check offon set + attr_check no unspecified + attr_check a/b/d/no "a/b/d/*" + attr_check a/b/d/yes unspecified ' @@ -64,6 +70,9 @@ a/b/h: test: a/b/h a/b/d/g: test: a/b/d/* onoff: test: unset offon: test: set +no: test: unspecified +a/b/d/no: test: a/b/d/* +a/b/d/yes: test: unspecified EOF sed -e "s/:.*//" < expect | git check-attr --stdin test > actual && -- cgit v1.2.1