git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Turner <dturner@twopensource.com>
To: Michael Haggerty <mhagger@alum.mit.edu>
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
	git mailing list <git@vger.kernel.org>
Subject: Re: RFC: git cat-file --follow-symlinks?
Date: Thu, 30 Apr 2015 11:03:43 -0700	[thread overview]
Message-ID: <1430417023.22711.8.camel@ubuntu> (raw)
In-Reply-To: <5541E3D4.7040207@alum.mit.edu>

On Thu, 2015-04-30 at 10:12 +0200, Michael Haggerty wrote:
> On 04/30/2015 07:34 AM, Junio C Hamano wrote:
> > [...]
> > But stepping back a bit.
> > 
> > We have been talking about HEAD^{resolve}:fleem but how did we learn
> > that there is a path "fleem" in the tree of HEAD in the first place?
> > I would presume that the answer eventually boils down to "somebody
> > fed HEAD to 'ls-tree -r'", and then that somebody is an idiot if it
> > did not grab the mode bits to learn what kind of blob fleem is, or
> > if it did not tell the guy that wants to drive "cat-file --batch".
> 
> I think a plausible use case for this feature is to read
> `$tag^{resolve}:RelNotes`, in which case the reason we know it's there
> is "because the maintainer told us it is there".

Yes, that is approximately my use case.  Read on for details:
With a colleague, I'm building a mode for the free and open source Pants
build system that will support build-aware sparse checkouts.  Pants is a
build tool for monorepos (inspired by Google's Blaze and similar to
Facebook's Buck).  Most individual users will only be using a tiny
subset of the full repository, so it would be convenient if they only
had to check out what the plan to use.  Assume that they want to check
out only a certain target (a path, approximately) plus its transitive
dependencies, on a certain revision.  So pants first checks that
directory (at that rev) for a BUILD file.  That BUILD file might point
to other BUILD files as dependencies, so again, we must examine those,
recursively.  

In no case did we do a ls-files command, since we want to examine as
little of the repo as possible.  And even if we had done an ls-files, we
would still need to resolve all of the symlinks ourselves.

So that's the motivation here.

  reply	other threads:[~2015-04-30 18:04 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-29 20:57 RFC: git cat-file --follow-symlinks? David Turner
2015-04-29 21:16 ` Jonathan Nieder
2015-04-29 21:24   ` David Turner
2015-04-29 21:17 ` Junio C Hamano
2015-04-29 21:30   ` David Turner
2015-04-29 21:48     ` Jeff King
2015-04-29 22:19       ` Jonathan Nieder
2015-04-29 23:05         ` Jeff King
2015-04-29 22:29       ` David Turner
2015-04-29 23:11         ` Jeff King
2015-04-30  0:37           ` Jeff King
2015-04-30  1:06             ` David Turner
2015-04-30  1:16               ` Jeff King
2015-04-30  1:31                 ` Junio C Hamano
2015-04-30  3:18                   ` Jeff King
2015-04-30  1:45                 ` David Turner
2015-04-30  3:37                   ` Jeff King
2015-04-30  5:34                     ` Junio C Hamano
2015-04-30  8:12                       ` Michael Haggerty
2015-04-30 18:03                         ` David Turner [this message]
2015-04-30 18:19                           ` Junio C Hamano
2015-04-30 18:28                             ` David Turner
2015-04-30 18:32                               ` Jeff King
2015-04-30 18:44                                 ` David Turner
2015-04-30 18:49                                   ` Jeff King
2015-04-30 19:00                                     ` David Turner
2015-04-30 19:10                                       ` Jeff King
2015-04-30 19:17                                         ` David Turner
2015-04-30 10:04                     ` Andreas Schwab
2015-04-30 18:27                       ` Jeff King
2015-04-30 19:18                         ` Junio C Hamano
2015-04-30 19:25                     ` David Turner
2015-04-30 19:46                       ` Junio C Hamano
2015-04-30 19:51                         ` Jeff King
2015-04-30 20:05                         ` Junio C Hamano
2015-05-01  3:29                     ` David Turner
2015-05-01  5:36                       ` Jeff King
2015-05-01 17:29                         ` David Turner
2015-05-01 20:11                           ` Jeff King
2015-05-01 21:09                             ` David Turner
2015-04-29 21:49     ` Junio C Hamano
2015-04-29 22:47       ` David Turner
2015-04-30  8:10 ` Michael Haggerty

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1430417023.22711.8.camel@ubuntu \
    --to=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mhagger@alum.mit.edu \
    --cc=peff@peff.net \
    /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.
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 NNTP newsgroup(s).