Re: [PATCH] sparse-checkout: avoid staging deletions of all files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Elijah Newren <newren@xxxxxxxxx> writes:

>> My only comment on the test case is to see if you could use
>> the "check_files" macro instead of "ls". See 761e3d26
>> (sparse-checkout: improve OS ls compatibility, 2019-12-20)
>> for details.
>
> I attempted to do so initially, but that function fails badly when
> there are no files (other than the "hidden" files '.git', '.', and
> '..') in the directory.  The reason for this comes from the "printf
> '%s\n' *" -- the glob won't match anything and so it prints a literal
> asterisk, which is not helpful.
>
> I thought about writing an asterisk out to the expected file for
> comparison, but that just made the testcase look confusing.

Maybe.  It is clear that the implementation ignores the possibility
that it can be asked to check for an empty directory.

    list_files() {
            # Do not replace this with 'ls "$1"', as "ls" with BSD-lineage
            # enables "-A" by default for root and ends up including ".git" and
            # such in its output. (Note, though, that running the test suite as
            # root is generally not recommended.)
            (cd "$1" && printf '%s\n' *)
    }

The comment does not even talk about the possibility that glob '*'
may fail to glob anything.

Instead of letting the macro spend an extra subprocess, using ls
ourselves but in a bit more defensive way would help?  I.e.

	...
	# nothing checked out, expect "No such file or directory"
	! ls clone_no_checkout/* >actual &&
	test_must_be_empty actual
	test_path_is_missing clone_no_checkout/.git/index
	...





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux