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

From: Junio C Hamano <[email-masked]>
Date: Wed, 29 Apr 2015 14:17:04 -0700

David Turner <[email-masked]> writes:

> Do people think this is reasonable?

I personally don't, exactly because we track the contents of the
symlink itself, not the referent.  Your "major wrinkle" that they
can point outside the repository is a mere manifestation of that.

The format specifiers the --batch option takes do not exactly give
you what the in-tree type of the thing is, to allow the receiving
end that parses the tagline (which it needs to do anyway in order to
find out where the current record ends) act on it.  %(objecttype)
would just say "blob" and you cannot tell if it is a plain file,
executable or a symbolic link.

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.