All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: David Turner <dturner@twopensource.com>,
	git mailing list <git@vger.kernel.org>
Subject: Re: RFC: git cat-file --follow-symlinks?
Date: Wed, 29 Apr 2015 18:31:22 -0700	[thread overview]
Message-ID: <xmqq7fsu4d1x.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <20150430011612.GA7530@peff.net> (Jeff King's message of "Wed, 29 Apr 2015 21:16:12 -0400")

Jeff King <peff@peff.net> writes:

> I had imagined we would stop resolution and you would just get the last
> object peeled object. Combined with teaching cat-file to show more
> object context, doing:
>
>   echo content >dest ;# actual blob
>   ln -s dest link    ;# link to blob
>   ln -s broken foo   ;# broken link
>   ln -s out ../foo   ;# out-of-tree link
>   git add . && git commit -m foo
>   for i in link broken out; do
> 	echo HEAD^{resolve}:$i
>   done |
>   git cat-file --batch="%(intreemode) %(size)"
>
> would yield:
>
>  (1)   100644 8
>        content
>  (2)   040000 3
>        foo
>  (3)   040000 6
>        ../foo
>
> where the left-margin numbers are for reference:
>
>   1. We dereference a real symlink, and pretend like we actually asked
>      for its referent.
>
>   2. For a broken link, we can't dereference, so we return the link
>      itself. You can tell by the mode, and the content tells you what
>      would have been dereferenced.
>
>   3. Ditto for out-of-tree. Note that this would be the _raw_ symlink
>      contents, not any kind of simplification (so if you asked for
>      "foo/bar/baz" and it was "../../../../out", you would the full path
>      with all those dots, not a simplified "../out", which I think is
>      what you were trying to show in earlier examples).

s/040000/160000/ I would think (if you really meant to expose a
tree, write it as 40000 instead, so that people will not get a wrong
impression and reimplement a broken tree object encoding some popular
Git hosting site broke their customer projects with ;-).

I am not sure $treeish^{resolve} is a great syntax, but I like the
concept and agree that it is a lot more sensible to handle this at
the level of sha1_name.c layer than an ad-hoc solution in the
cat-file layer.

  reply	other threads:[~2015-04-30  1:31 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 [this message]
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
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=xmqq7fsu4d1x.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.