Re: gitignore vs. exclude vs assume-unchanged?
- From
- alex@bellandwhistle.net <alex@bellandwhistle.net>
- Date
- Apr 16, 2014, 23:07 UTC
- Message-ID
- <dee7ee673c8c4d81fb5aaecea25e9709@bellandwhistle.net>
- In-Reply-To
- <xmqqy4z5go1y.fsf@gitster.dls.corp.google.com>
On 2014-04-16 10:51, Junio C Hamano wrote:
Show 26 quoted lines
> alex@bellandwhistle.net writes: > >> Any clarification on the differences much appreciated: >> >> http://stackoverflow.com/questions/23097368/git-ignore-vs-exclude-vs-assume-unchanged/23097509 > > Please don't force people to refer to external site. > > The .gitignore and .git/info/exclude are the two UIs to invoke the > same mechanism. In-tree .gitignore are to be shared among project > members (i.e. everybody working on the project should consider the > paths that match the ignore pattern in there as cruft). On the > other hand, .git/info/exclude is meant for personal ignore patterns > (i.e. you, while working on the project, consider them as cruft). > > Assume-unchanged should not be abused for an ignore mechanism. It > is "I know my filesystem operations are slow. I'll promise Git that > I won't change these paths by making them with that bit---that way, > Git does not have to check if I changed things in there every time I > ask for 'git status' output". It does not mean anything other than > that. Especially, it is *not* a promise by Git that Git will always > consider these paths are unmodified---if Git can determine a path > that is marked as assume-unchanged has changed without incurring > extra lstat(2) cost, it reserves the right to report that the path > *has been* modified (as a result, "git commit -a" is free to commit > that change).
Thanks June. Great to hear this authoritatively.
IMHO your very helpful explanation about typical use cases, the purpose of 'exclude, and assume-unchanged not being a "promise" is missing from the docs, or at least not obviously present:
http://git-scm.com/docs
In particular, 'exclude' is spottily documented. I realize the docs are structured strictly as an API reference, but it would be great to see a comparison of ignore techniques spelled out. FWIW I asked several people I think of as experts and none of them felt sure of their answer. :)
thanks again.