From: David Turner <dturner@twopensource.com>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>,
git mailing list <git@vger.kernel.org>
Subject: Re: RFC: git cat-file --follow-symlinks?
Date: Thu, 30 Apr 2015 12:25:24 -0700 [thread overview]
Message-ID: <1430421924.22711.57.camel@ubuntu> (raw)
In-Reply-To: <20150430033725.GB12361@peff.net>
On Wed, 2015-04-29 at 23:37 -0400, Jeff King wrote:
> 3. Return an object with the symlink relative to the original
> filename (so "../external" in this case). This is kind of weird,
> though, because we're not just returning a string from the name
> resolution. It's an actual object. So we'd be generating a fake
> object that doesn't actually exist in the object db and
> returning that. Feeding that sha1 to another program would fail.
> I can't say that I'm excited about any of them. Perhaps you or somebody
> else can think of a more clever solution.
>
> Note that the complication with (3) does come from my trying to push
> this down into the name-resolution code.
All else being equal, I would prefer the more general solution. But
here, the generality comes with a price that seems somewhat high.
When I think about the commands that might use this, cat-file and
ls-tree are at the top of the list (although as noted, I am only likely
to use cat-file, and it's not clear what ls-tree should do in the event
of an out-of-repo link).
I could imagine someone caring about grep and diff. Someone who cares
about grep would likely want it to be willing to go out-of-worktree (as
opposed to silently missing things). I think we all agree that having
git go out-of-worktree is a mistake, so I'm not sure this use-case is
one that is supportable.
The weirdest case is log. If I say git log HEAD^{resolve} --
foo/bar/baz, does it mean "commits that have touched what is now pointed
to by foo/bar/baz"? Or does it mean "commits that have touched a thing
that was at that time pointed to by foo/bar/baz"? [1] The second one is
more useful, since it could not otherwise be achieved. But I think this
would require additional code in log on top of whatever additional code
is in sha1_name. In other words, we would not get it for free just by
adjusting sha1_name.
Are there other relevant commands that I'm missing?
If not, I think we should reconsider the original thought of just
supporting cat-file. The nice thing about just supporting cat-file is
that for out-of-repo links we can add a special form to the output, that
does not contain a sha (since there is no corresponding sha in the
repo). In other words, something like your solution 3, quoted above.
[1] See page 11 of http://inform7.com/learn/documents/WhitePaper.pdf
("Has the president ever been ill?") for a similar case.
next prev parent reply other threads:[~2015-04-30 19:25 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
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 [this message]
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=1430421924.22711.57.camel@ubuntu \
--to=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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.