git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: gitignore vs. exclude vs assume-unchanged?

From
Aalex@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.
Previous: Junio C HamanoNext: Jonathan Nieder
Message 3 of 10 in “gitignore vs. exclude vs assume-unchanged?”
  1. alex@bellandwhistle.netApr 16, 2014
  2. Junio C HamanoApr 16, 2014
  3. alex@bellandwhistle.netApr 16, 2014
  4. Jonathan NiederApr 16, 2014
  5. alex@bellandwhistle.netApr 18, 2014
  6. Andrew ArdillApr 22, 2014
  7. Junio C HamanoApr 22, 2014
  8. alex@bellandwhistle.netApr 25, 2014
  9. luc.linux@mailoo.orgApr 26, 2014
  10. ZéApr 26, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.