RE: Missing ? wildcard character in gitignore documentation
- From
Randall S. Becker <rsbecker@nexbridge.com>
- Date
- Jan 29, 2018, 15:47 UTC
- Message-ID
- <000f01d39918$70009eb0$5001dc10$@nexbridge.com>
- In-Reply-To
- <903a193c-0360-59bc-4d86-6470ac8dc1a8@bytes.nz>
On January 29, 2018 6:30 AM, Jack F wrote:
Show 28 quoted lines
> I have just noticed that the documentation for gitignore is missing > documentation on using the ? to match any single character. I have included > a example below with git version 2.14.1. > > |11:05:09 j ~/Development/ls-ignore [master] $ git status On branch > master Your branch is up-to-date with 'origin/master'. nothing to commit, > working tree clean 11:05:11 j ~/Development/ls-ignore [master] $ cat > .gitignore *~ node_modules yarn* 11:05:21 j ~/Development/ls-ignore > [master] $ touch test.swo 11:05:31 j ~/Development/ls-ignore [master]?1 $ > git status On branch master Your branch is up-to-date with 'origin/master'. > Untracked files: (use "git add <file>..." to include in what will be committed) > test.swo nothing added to commit but untracked files present (use "git add" > to track) 11:05:35 j ~/Development/ls-ignore [master]?1 $ echo "*.sw?" >> > .gitignore 11:05:40 j ~/Development/ls-ignore [master]≠1 $ cat .gitignore *~ > node_modules > yarn* *.sw? 11:05:51 j ~/Development/ls-ignore [master]≠1 $ git status On > branch master Your branch is up-to-date with 'origin/master'. Changes not > staged for commit: (use "git add <file>..." to update what will be > committed) (use "git checkout -- <file>..." to discard changes in working > directory) modified: .gitignore no changes added to commit (use "git add" > and/or "git commit -a")| > > > > Noticed it when checking an npm package (ignore) that uses the > documentation (https://git-scm.com/docs/gitignore) to determine its > functionality. It is documented in https://git-scm.com/book/en/v2/Git- > Basics-Recording-Changes-to-the-Repository#Ignoring-Files
The implication of support for ? is there through the following paragraph from the gitignore documentation:
"Otherwise, Git treats the pattern as a shell glob suitable for consumption by fnmatch(3)
with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the
pathname. For example, "Documentation/*.html" matches "Documentation/git.html"
but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html"."Of course you have to go read fnmatch(3), so it might be good for expand on this here :).
Cheers, Randall
-- Brief whoami: NonStop developer since approximately 211288444200000000 UNIX developer since approximately 421664400 -- In my real life, I talk too much.