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

Re: GitAttributes feature export-ignore works, but -export-ignore (with dash) should also work

From
Jeff King <peff@peff.net>
Date
Nov 22, 2019, 06:59 UTC
Message-ID
<20191122065918.GB23225@sigill.intra.peff.net>
In-Reply-To
<xmqq5zjd8ij2.fsf@gitster-ct.c.googlers.com>
On Thu, Nov 21, 2019 at 10:29:21PM +0900, Junio C Hamano wrote:
Show 22 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > Now obviously there is recursion happening inside git-archive, as it
> > walks the tree. And the current behavior is that it sees the ignored
> > subtree and doesn't walk into it at all. So it _could_ make your
> > original example work by actually searching within the tree for any
> > paths marked -export-ignore, and including the directory if and only if
> > it has unignored entries.
> >
> > I can't offhand think of anything that would break if we started doing
> > that,...
> 
> If there is some effect we want to attach to a directory itself
> without affecting the paths inside it, the current and original
> design lets you express it naturally.  If we make a pattern that
> match a directory to recurse, it is still possible to express it,
> but it is a bit cumbersome, e.g.
> 
> 	/directory	want-to-affect-this
> 	/directory/**	-want-to-affect-this
> 
> I would think.

I didn't mean teaching the attribute code anything about recursion. You convinced me in the thread I linked that the current rules are just fine for expressing what we want (and especially with "**" now it's easy). It's git-archive which does the recursion here, so it could have more convenient semantics for an attribute attached to a directory.

(Though again, I'm happy enough with the solutions I've suggested in this thread).

> Git generally does *not* track directories, so in a sense it is
> arguable if it even makes sense to think about attaching an
> attribute to a directory itself (as opposed to a non-directory
> inside the directory) in the first place, though.

I mostly agree, though in this case if we are exporting to a tarball, which _does_ care about directories. So the difference between "don't export foo/" and "don't export foo/*" can be observed in the output. I doubt anybody really cares that much in practice, though (i.e., does anybody really want to be able to output empty directories in their tarballs?).

-Peff
Previous: Junio C HamanoNext: M Lewis
Message 4 of 6 in “GitAttributes feature export-ignore works, but -export-ignore (with dash) should also work”
  1. M LewisNov 20, 2019
  2. Jeff KingNov 21, 2019
  3. Junio C HamanoNov 21, 2019
  4. Jeff KingNov 22, 2019
  5. M LewisNov 21, 2019
  6. Jeff KingNov 22, 2019

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.