Subject: Re: [PATCH] Fix off by one error in prep_exclude.

From: Johannes Sixt <[email-masked]>
Date: Mon, 28 Jan 2008 10:05:34 +0100

Junio C Hamano schrieb:
> Johannes Sixt <[email-masked]> writes:
> 
>> The "problem" is not only with git-clean, but also in others, like
>> git-ls-files. Try this in you favorite repository:
>>
>>    $ git ls-files -o /*bin
>>
>> The output does not make a lot of sense. (Here it lists the contents of
>> /bin and /sbin.) Not that it hurts with ls-files, but
>>
>>    $ git clean -f /
>>
>> is basically a synonym for
>>
>>    $ rm -rf /
> 
> Yeah, /*bin is not inside the repository so it should not even
> be reported as "others".  Shouldn't the commands detect this and
> reject feeding such paths outside the work tree to the core,
> which always expect you to talk about paths inside?

That's what I had expected. But look:

   $ git ls-files -o /
   [... tons of file names ...]

   $ git ls-files -o ..
   fatal: '..' is outside repository

   $ git clean -n /    # with Shawn's patch
   Would remove /bin/
   [... etc ...]

   $ git clean -n ..
   fatal: '..' is outside repository

Some mechanism for this is already there; it's just not complete enough.

-- Hannes