threads / patch / 26401

patchAdd case insensitive support in matching pathspec

Subject: [PATCH] Add case insensitive support in matching pathspec

## tl;dr

7 messages between Feb 3, 2011 and Feb 5, 2011. Diffs are folded; open one to read it.

replies: 6people: 3as markdown or json

Nguyễn Thái Ngọc Duy· Feb 3, 2011, 16:38 UTC · lore
Commit 21444f1 (Add case insensitivity support when using git ls-files
- 2010-10-03) teaches match_pathspec() to ignore case when
core.ignorecase=true.

match_pathspec_depth() is developed independently and does not have this feature. Teach it.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 On top of nd/struct-pathspec, but requires jj/icase-directory. I can
 rebase the series on top of master if it causes too many conflicts.
 dir.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Show changes to dir.c +2 −2
diff --git a/dir.c b/dir.c
index b1407a5..2597f81 100644
--- a/dir.c
+++ b/dir.c
@@ -192,7 +192,7 @@ static int match_pathspec_item(const struct pathspec_item *item, int prefix,
 	if (!*match)
 		return MATCHED_RECURSIVELY;
 
-	if (matchlen <= namelen && !strncmp(match, name, matchlen)) {
+	if (matchlen <= namelen && !strncmp_icase(match, name, matchlen)) {
 		if (matchlen == namelen)
 			return MATCHED_EXACTLY;
 
@@ -200,7 +200,7 @@ static int match_pathspec_item(const struct pathspec_item *item, int prefix,
 			return MATCHED_RECURSIVELY;
 	}
 
-	if (item->has_wildcard && !fnmatch(match, name, 0))
+	if (item->has_wildcard && !fnmatch_icase(match, name, 0))
 		return MATCHED_FNMATCH;
 
 	return 0;
-- 
1.7.2.2
Johannes Sixt· Feb 3, 2011, 20:17 UTC · re: Nguyễn Thái Ngọc Duy · lore

Re: [PATCH] Add case insensitive support in matching pathspec

On Donnerstag, 3. Februar 2011, Nguyễn Thái Ngọc Duy wrote:
Show 6 quoted lines
> Commit 21444f1 (Add case insensitivity support when using git ls-files
> - 2010-10-03) teaches match_pathspec() to ignore case when
> core.ignorecase=true.
>
> match_pathspec_depth() is developed independently and does not have
> this feature. Teach it.

Is match_pathspec_depth() used to match names of files on the filesystem, or names of files in the index or in the repository?

core.ignorecase should be honored only when files on the filesystem are matched, IMO.

-- Hannes
Nguyen Thai Ngoc Duy· Feb 4, 2011, 13:00 UTC · re: Johannes Sixt · lore

Re: [PATCH] Add case insensitive support in matching pathspec

2011/2/4 Johannes Sixt <j6t@kdbg.org>:
Show 13 quoted lines
> On Donnerstag, 3. Februar 2011, Nguyễn Thái Ngọc Duy wrote:
>> Commit 21444f1 (Add case insensitivity support when using git ls-files
>> - 2010-10-03) teaches match_pathspec() to ignore case when
>> core.ignorecase=true.
>>
>> match_pathspec_depth() is developed independently and does not have
>> this feature. Teach it.
>
> Is match_pathspec_depth() used to match names of files on the filesystem, or
> names of files in the index or in the repository?
>
> core.ignorecase should be honored only when files on the filesystem are
> matched, IMO.
Names in index, just as same as match_pathspec().
-- 
Duy
Junio C Hamano· Feb 4, 2011, 23:06 UTC · re: Nguyen Thai Ngoc Duy · lore

Re: [PATCH] Add case insensitive support in matching pathspec

Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
>> core.ignorecase should be honored only when files on the filesystem are
>> matched, IMO.
>
> Names in index, just as same as match_pathspec().

If the matched entities are names in the index, they should already be canonical and we shouldn't be matching with icase, no?

Nguyen Thai Ngoc Duy· Feb 5, 2011, 04:14 UTC · re: Junio C Hamano · lore

Re: [PATCH] Add case insensitive support in matching pathspec

On Sat, Feb 5, 2011 at 6:06 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
>
>>> core.ignorecase should be honored only when files on the filesystem are
>>> matched, IMO.
>>
>> Names in index, just as same as match_pathspec().
>
> If the matched entities are names in the index, they should already be
> canonical and we shouldn't be matching with icase, no?

The patterns are case-insensitive. The example given in 21444f is "git ls-files mydir" should also match MyDir/* in index. Although by modifying match_one(), it affects more than just git-ls-files. I'm not the original author, so Joshua, was that patch to fix git-ls-files only?

-- 
Duy
Junio C Hamano· Feb 3, 2011, 22:14 UTC · re: Nguyễn Thái Ngọc Duy · lore

Re: [PATCH] Add case insensitive support in matching pathspec

Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>  On top of nd/struct-pathspec, but requires jj/icase-directory. I can
>  rebase the series on top of master if it causes too many conflicts.

I am in the middle of rewinding 'next' and have already rebased the topic; I will queue the result in 'pu' so could you check the result when it is pushed out later?

Nguyen Thai Ngoc Duy· Feb 5, 2011, 07:44 UTC · re: Junio C Hamano · lore

Re: [PATCH] Add case insensitive support in matching pathspec

2011/2/4 Junio C Hamano <gitster@pobox.com>:
Show 8 quoted lines
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>>  On top of nd/struct-pathspec, but requires jj/icase-directory. I can
>>  rebase the series on top of master if it causes too many conflicts.
>
> I am in the middle of rewinding 'next' and have already rebased the topic;
> I will queue the result in 'pu' so could you check the result when it is
> pushed out later?
Checked. Looks good to me.
-- 
Duy

← back to recent threads