Browse Source

attr: Allow multiple changes to an attribute on the same line.

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 <grubba@grubba.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Henrik Grubbström 15 years ago committed by Junio C Hamano
parent
commit
969f9d7322
  1. 2
      attr.c
  2. 6
      t/t0003-attributes.sh

2
attr.c

@ -599,7 +599,7 @@ static int fill_one(const char *what, struct match_attr *a, int rem)
struct git_attr_check *check = check_all_attr; struct git_attr_check *check = check_all_attr;
int i; int i;


for (i = 0; 0 < rem && i < a->num_attr; i++) { for (i = a->num_attr - 1; 0 < rem && 0 <= i; i--) {
struct git_attr *attr = a->state[i].attr; struct git_attr *attr = a->state[i].attr;
const char **n = &(check[attr->attr_nr].value); const char **n = &(check[attr->attr_nr].value);
const char *v = a->state[i].setto; const char *v = a->state[i].setto;

6
t/t0003-attributes.sh

@ -22,6 +22,8 @@ test_expect_success 'setup' '
( (
echo "f test=f" echo "f test=f"
echo "a/i test=a/i" echo "a/i test=a/i"
echo "onoff test -test"
echo "offon -test test"
) >.gitattributes && ) >.gitattributes &&
( (
echo "g test=a/g" && echo "g test=a/g" &&
@ -44,6 +46,8 @@ test_expect_success 'attribute test' '
attr_check b/g unspecified && attr_check b/g unspecified &&
attr_check a/b/h a/b/h && attr_check a/b/h a/b/h &&
attr_check a/b/d/g "a/b/d/*" 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 b/g: test: unspecified
a/b/h: test: a/b/h a/b/h: test: a/b/h
a/b/d/g: test: a/b/d/* a/b/d/g: test: a/b/d/*
onoff: test: unset
offon: test: set
EOF EOF


sed -e "s/:.*//" < expect | git check-attr --stdin test > actual && sed -e "s/:.*//" < expect | git check-attr --stdin test > actual &&

Loading…
Cancel
Save