summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Ogilvie <mmogilvi_git@miniinfo.net>2008-04-22 18:19:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-04-23 04:12:37 (GMT)
commit82881b38235d0a46a4486dc5dc819c5d0ee3f2c1 (patch)
treed4546c77756c2340eb7645e4375a83d80c7c1fee
parent29df2385d09611219c53d07f453794d6146e73a3 (diff)
downloadgit-82881b38235d0a46a4486dc5dc819c5d0ee3f2c1.zip
git-82881b38235d0a46a4486dc5dc819c5d0ee3f2c1.tar.gz
git-82881b38235d0a46a4486dc5dc819c5d0ee3f2c1.tar.bz2
gitattributes: Fix subdirectory attributes specified from root directory
Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--attr.c4
-rwxr-xr-xt/t0003-attributes.sh8
2 files changed, 11 insertions, 1 deletions
diff --git a/attr.c b/attr.c
index 64b77b1..1a15fad 100644
--- a/attr.c
+++ b/attr.c
@@ -546,7 +546,9 @@ static int path_matches(const char *pathname, int pathlen,
(baselen && pathname[baselen] != '/') ||
strncmp(pathname, base, baselen))
return 0;
- return fnmatch(pattern, pathname + baselen + 1, FNM_PATHNAME) == 0;
+ if (baselen != 0)
+ baselen++;
+ return fnmatch(pattern, pathname + baselen, FNM_PATHNAME) == 0;
}
static int fill_one(const char *what, struct match_attr *a, int rem)
diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index 47f08a4..e7fa4f5 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -21,6 +21,7 @@ test_expect_success 'setup' '
mkdir -p a/b/d a/c &&
(
echo "f test=f"
+ echo "a/i test=a/i"
) >.gitattributes &&
(
echo "g test=a/g" &&
@@ -46,4 +47,11 @@ test_expect_success 'attribute test' '
'
+test_expect_success 'root subdir attribute test' '
+
+ attr_check a/i a/i &&
+ attr_check subdir/a/i unspecified
+
+'
+
test_done