Re: Git attributes ignored for root directory

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

 



On 05/10/2011 19:38, Junio C Hamano wrote:
In fact the support for gitattributes using patterns involving "." was
pretty spotty in v1.7.6 too.  For example,

The attribute patterns (or exclude patterns for that matter) were never
designed to name "the current directory". The way to name "everything *in*
this directory" has always been to say "*" (the "* text=auto" example in
the documentation says it shows how to set the attribute "for all
files"). Admittedly the pattern may miss ".*" files.

What if I do not want to say things about the "content" of the directory but about the directory itself? This is exactly my case.


I have to agree that things like "./" and "."  were outside the scope of
the design; in some cases undefined behaviour given to such patterns may
have made sense but that was mere accident.

Actually what I have in my `~/.gitattributes` is

    /. show_in_prompt=no

Anyway, I see a conflict between

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

and

  - If the pattern is a single dot and nothing else, it matches everything
    in the current directory.

in the first case `.` is treated as a "glob dot", while in the second case it is treated as a "regexp dot". I would find this confusing.

Patterns can match directories using `/foo`. Why don't you just say that `.` is equivalent to `./` and `/foo/.` is equivalent to `/foo`?


So "./" in .gitignore or .gitattributes at the toplevel would match all
the top-level directories and files but does not apply to the paths
contained in the matched directories. "." in .gitignore or .gitattributes
at the toplevel would match everything under the sun.

In the case of `.gitignore`, `/foo/.` and `/foo/` would have the same effect and they look sane to me.


Would it be sensible to assume that users would not be surprised if
". text=auto" meant that the attribute applies to every file in the
worktree?

I would be surprised as I expect `.` to be a "glob dot". But maybe it is just me and my prejudices :)

Bye,

--
Gioele Barabucci <gioele@xxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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]