Antw: Re: Q: Ignore ./foo, but not script/foo

2018-07-19 Thread Ulrich Windl
>>> Sebastian Staudt  schrieb am 19.07.2018 um 09:55 in
Nachricht
:
> Hello Ulrich,
> 
> if you want to ignore a file in the root of the repository (and only
> there) this is the correct syntax:
> 
> /foo

Hi!

Thanks, you are perfectly right: It works, and actually, when read carefully 
enough, the last item in "PATTERN FORMAT" explains that.

Maybe the EXAMPLES could have an example for each item (5 cases) described ;-)

Regards,
Ulrich

> 
> Best regards,
> Sebastian
> Am Do., 19. Juli 2018 um 09:45 Uhr schrieb Ulrich Windl
> :
>>
>> Hi!
>>
>> I have a (simple) question I could not answer elegantly from the 
> gitignore(5) manual page:
>>
>> A project produces a "foo" binary in the root directory that I want to 
> ignore (So I put "foo" into .gitignore)
>> Unfortunately I found out taht I cannot have a "script/foo" added while 
> "foo" is in .gitignore.
>> So I changed "foo" to "./foo" in .gitignore. I can could add "script/foo", 
> but now "foo" is not ignored any more!
>>
>> Is there as solution other than:?
>> --
>> foo
>> !script/foo
>> !bla/foo
>> #etc.
>> --
>>
>> If "foo" is one exception to generally using foo elsewhere, it seems to be 
> counterproductive to have to add exceptions for all the cases that are not 
> exceptions, while "foo" is the only exception...
>>
>> Did I miss something? If so, maybe add it to a future manual page.
>>
>> Regards,
>> Ulrich
>>
>>






Re: Q: Ignore ./foo, but not script/foo

2018-07-19 Thread Ævar Arnfjörð Bjarmason


On Thu, Jul 19 2018, Timothy Rice wrote:

>> How did you come up with this "./" syntax?
>
> It is a Unix thing: "./" or just "." refers to the current directory.
>
> When calling scripts or programs in the current directory from a Unix
> command line, it is required to refer to them as, say, "./foo" (not just
> "foo") -- unless "." is in your PATH.
>
> Most people do put "." in their PATH for convenience but it is considered a
> little unsafe [1].
>
> Personally, I am surprised that gitignore does not understand this
> notation. To me, OPs meaning was crystal clear: "./foo" should mean to only
> ignore the foo in the repository's root directory.
>
> [1] https://superuser.com/questions/156582/why-is-not-in-the-path-by-default

To clarify I was trying to fish for whether we'd accidentally documented
"./" somewhere since OP was making references to the docs.


Re: Q: Ignore ./foo, but not script/foo

2018-07-19 Thread Konstantin Khomoutov
On Thu, Jul 19, 2018 at 07:06:57PM +1000, Timothy Rice wrote:

[...]
> Most people do put "." in their PATH for convenience
[...]

IMO this is a gross overstatement: personally, I know of no person using
a Unix-like operation system who does this.



Re: Q: Ignore ./foo, but not script/foo

2018-07-19 Thread Timothy Rice
> How did you come up with this "./" syntax?

It is a Unix thing: "./" or just "." refers to the current directory.

When calling scripts or programs in the current directory from a Unix
command line, it is required to refer to them as, say, "./foo" (not just
"foo") -- unless "." is in your PATH.

Most people do put "." in their PATH for convenience but it is considered a
little unsafe [1].

Personally, I am surprised that gitignore does not understand this
notation. To me, OPs meaning was crystal clear: "./foo" should mean to only
ignore the foo in the repository's root directory.

[1] https://superuser.com/questions/156582/why-is-not-in-the-path-by-default

~ Tim



Re: Q: Ignore ./foo, but not script/foo

2018-07-19 Thread 3Ævar Arnfjörð Bjarmason


On Thu, Jul 19 2018, Ulrich Windl wrote:

> Hi!
>
> I have a (simple) question I could not answer elegantly from the gitignore(5) 
> manual page:
>
> A project produces a "foo" binary in the root directory that I want to ignore 
> (So I put "foo" into .gitignore)
> Unfortunately I found out taht I cannot have a "script/foo" added while "foo" 
> is in .gitignore.
> So I changed "foo" to "./foo" in .gitignore. I can could add "script/foo", 
> but now "foo" is not ignored any more!
>
> Is there as solution other than:?
> --
> foo
> !script/foo
> !bla/foo
> #etc.

The solution is to just do:

echo /foo >.gitignore

Then it'll ignore the top-level /foo, but nothing else. How did you come
up with this "./" syntax? It's not understood by gitignore. From
gitignore(5):

   A leading slash matches the beginning of the pathname. For example,
   "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".