Re: [PATCH] t/Makefile: make sure that file names are truly platform-independent
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 15, 2016, 16:06 UTC
- Message-ID
- <xmqqk2fihv90.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <814aefbcf0f9380098e3f7a183399e11e24180dd.1471270061.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
> Some file names that are okay on ext4 and on HFS+ are illegal in > Windows. In order to stay truly platform-independent, Git's source code > must not contain such illegal file names, even if things just happen to > work on Linux.
Good thinking.
Some tests may have to be skipped on platforms that cannot express certain paths, but even then they shouldn't ship a file with pathname that cannot even be checked out (they should instead create and use such a path, protected behind filesystem specific test prerequisite).
> +test-lint-filenames: > + @illegal="$$(git ls-files | grep '["*:<>?\\|]')"; \
This pattern must exclude questionables on either NTFS or HFS+; it is ironic that it is not even sufficient to limit ourselves to the Portable Character Set [*1*], but such is life.
By the way, doesn't ls-files take pathspec glob, saving one extra process to run grep?
master$ git ls-files '*["*:<>?\\|]*'
pu$ git ls-files '*["*:<>?\\|]*'
t/t4013/diff.diff_--diff-line-prefix=-->_master_master^_sideThanks.
> + test -z "$$illegal" || { \
> + echo >&2 "illegal file name(s): " $$illegal; exit 1; }[Reference]
*1* http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html#tag_06_01