From: Aaron Pelly <aaron@pelly.co>
To: unlisted-recipients:; (no To-header on input)
Cc: git@vger.kernel.org
Subject: Re: Expanding Includes in .gitignore
Date: Thu, 27 Oct 2016 23:33:07 +1300 [thread overview]
Message-ID: <91d49c7b-2bc7-a872-24c8-25836dea17fb@pelly.co> (raw)
In-Reply-To: <CALhvvbYqeWw+q=TPxTpve6JKoy0URYeWxj2vVOnzrA_g3Z3esA@mail.gmail.com>
On 27/10/16 21:19, Alexei Lozovsky wrote:
>> I'm thinking something like ". path/to/include/file" in an ignore file,
>> and/or creating .gitignore.d and/or allowing $HOME/.config/git/ignore
>> and $GIT_DIR/info/exclude to be directories. Or some sane and consistent
>> mixture of these things.
>
> I think the rc.d-like approach with directories is better as it
> does not add new magical filenames (what if I absolutely do need
> to name my directories ". path", with a space? :)
Yes. Another alternative I thought of was #include path/to/include/file.
That'd be backwards compatible, which is a good thing, but would involve
parsing comments, which obviously could start with #include. Or lines
like ^Include /path/file$ In the case of finding an invalid file,
passing it over and issuing a simple warning should surface any issues
with existing gitignores. Anyway, this conversation is why I bring it up
on the list.
Coming back to this, maybe :(include)/path/file might be more git-like
>> In the case of a directory the plan would be to add links to files
>> stored/sourced elsewhere. This does pose a precedence question which I
>> haven't thought about yet, but probably makes it too hard for the
>> limited value it brings.
>
> Now, if we consider the case of multiple .gitignore files, it
> could be unexpected and possibly annoying for negative patterns
> in one file to affect the patterns added by some other files.
That is a concern. It is non obvious; the worst kind of annoying.
> I would find it more conceptually simple to apply individual
> .gitignores one by one, as opposed to parsing them all and
> creating one giant exclusion rule. (In technical terms, this
> means keeping one struct exclude_list for each .gitignore,
> not merging them all into one single list.)
I agree. I haven't looked, but that sounds like touching significantly
more code though. Actually, thinking about it for 20 seconds more, it
shouldn't be too hard, should it?
> In this case there should be no precendence problems as applied
> gitignores only add new ignored files, without un-ignoring
> anything previously ignored by other files.
Again, I haven't looked yet, but there is still an issue of precedence
with other gitignore files in $HOME and the repo.
> However, if we allow textual inclusion, then it means that we
> can put a gitignore into our gitignore so that we can unignore
> while we ignore, which again brings us the question of whether
> it is actually needed and expected.
Gah! Yes. One way or the other.
>> I would like to know the desirability/practicality/stupidity of such a
>> feature as I believe it is within my skillset to implement it.
>
> However, I do not recall any precendent of git using rc.d-like
> configs.
Many things have adopted this technique recently. Well, the last 15
years. It is common, understood, and fairly simple. I see no issue with it.
> And some can argue that your goal can be achieved by
> generating the .gitignore by some external means and symlinking
> the result into .git/info/exclude, so this is not Git's problem
> and we should not be overcomplicating things with something as
> simple as a list exclude patterns. This line of argument also
> can be used to opposes any textual inclusion as well, because
> it can be expanded into 'why don't we add a Turing-complete
> programming language then to specify the patterns to ignore'.
I know. Another reason to bring the idea to the list. I sort of have
this attitude myself. My main objection to it is that I can't think of a
hook to automate it with.
But: What about some kind of :(exec) that executes a script and returns
a gitignore file? You write the script; you're responsible. And the
behaviour is obvious. I haven't thought that through. It just came to me
then, and might present security issues, but could greatly simplify things.
next prev parent reply other threads:[~2016-10-27 14:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 0:22 Expanding Includes in .gitignore Aaron Pelly
2016-10-27 2:22 ` Stefan Beller
2016-10-27 9:51 ` Aaron Pelly
2016-10-27 8:19 ` Alexei Lozovsky
2016-10-27 10:33 ` Aaron Pelly [this message]
2016-10-27 10:50 ` Jeff King
2016-10-27 19:48 ` Jacob Keller
2016-10-27 20:59 ` Aaron Pelly
2016-10-27 21:04 ` Jeff King
2016-10-27 21:26 ` Aaron Pelly
2016-10-27 21:39 ` Jacob Keller
2016-10-30 3:09 ` Duy Nguyen
2016-10-27 20:28 ` Aaron Pelly
2016-10-27 20:55 ` Jeff King
2016-10-27 21:07 ` Jeff King
2016-10-27 22:30 ` Aaron Pelly
2016-10-27 23:07 ` Aaron Pelly
2016-10-28 2:54 ` Junio C Hamano
2016-10-28 9:32 ` Aaron Pelly
2016-10-30 3:16 ` Duy Nguyen
2016-10-30 12:54 ` Jeff King
2016-10-27 21:55 ` Aaron Pelly
2016-10-27 22:17 ` Aaron Pelly
2016-10-28 8:10 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91d49c7b-2bc7-a872-24c8-25836dea17fb@pelly.co \
--to=aaron@pelly.co \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).