Subject: Re: RFC: git cat-file --follow-symlinks?

From: David Turner <[email-masked]>
Date: Wed, 29 Apr 2015 15:47:52 -0700

On Wed, 2015-04-29 at 14:49 -0700, Junio C Hamano wrote:
> David Turner <[email-masked]> writes:
> 
> >> Perhaps an ideal interface might be something like this:
> >> 
> >>     $ echo HEAD:RelNotes |
> >>       git cat-file --batch='%(objecttype) %(intreemode)
> >>     %(objectsize)' blob 160000 32
> >>     Documentation/RelNotes/2.4.0.txt
> >> 
> >> I suspect it would be just the matter of teaching "cat-file
> >> --batch" to read from get_sha1_with_context() in
> >> batch_one_object(), instead of reading from get_sha1() which it
> >> currently does.
> >> 
> >> And that inteferface I think I can live with.
> >
> > Even if I had %(intreemode), I would still have to do a recursive
> > search to figure out whether Documentation or RelNotes was a
> > symlink.

I apologize.  I have misread your example.  All of my text was assuming
that Documentation/Relnotes/2.4.0.txt was a symlink, instead
of /RelNotes being a symlink to Documentation/Relnotes/2.4.0.txt.  So my
previous message was very difficult to interpret.  I think Jeff King's
reply is a better starting point for discussion, since it lays out the
advantages and disadvantages of the proposal.

> allowing it to make policy decisions (e.g. "if
> outside repository, always look at the filesystem that the program
> happens to be running" [*1*]) 

Despite my confusion, I don't think I ever proposed doing this.  I
proposed that in the case that a symlink points outside the repo,
cat-file would tell the caller that it has done so, so that the caller
can decide what to do.