From: Shawn Pearce <spearce@spearce.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git <git@vger.kernel.org>,
David Turner <dturner@twopensource.com>,
Michael Haggerty <mhagger@alum.mit.edu>,
Jeff King <peff@peff.net>
Subject: Re: RefTree: Alternate ref backend
Date: Thu, 17 Dec 2015 14:15:41 -0800 [thread overview]
Message-ID: <CAJo=hJvwwOooPG2XUbhLZqyDMwsOa1Ba7eoA1AFLkF3BHk5V8Q@mail.gmail.com> (raw)
In-Reply-To: <xmqqk2ocbuw9.fsf@gitster.mtv.corp.google.com>
On Thu, Dec 17, 2015 at 1:57 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Shawn Pearce <spearce@spearce.org> writes:
>
>> For example, recent git.git has a structure like this:
>>
>> $ git ls-tree -r refs/txn/committed
>> 120000 blob 22e42fc826b437033ca444e09368f53a0b169322 ..HEAD
>> 160000 commit 1ff88560c8d22bcdb528a6629239d638f927cb96 heads/maint
>> 160000 commit f3adf457e046f92f039353762a78dcb3afb2cb13 heads/master
>> 160000 commit 5ee9e94ccfede68f0c386c497dd85c017efa22d6 heads/next
>> 160000 commit d3835d54cffb16c4362979a5be3ba9958eab4116 heads/pu
>> 160000 commit 68a0f56b615b61afdbd86be01a3ca63dca70edc0 heads/todo
>> ...
>> 160000 commit 17f9f635c101aef03874e1de1d8d0322187494b3 tags/v2.6.0
>> 160000 commit 5bebb9057df8287684c763c59c67f25f16884ef6 tags/v2.6.0-rc0
>> 160000 commit 16ffa6443e279a9b3b63d7a2bebeb07833506010 tags/v2.6.0-rc0^{}
>> ...
>> 160000 commit be08dee9738eaaa0423885ed189c2b6ad8368cf0 tags/v2.6.0^{}
>>
>> Tags are stored twice, to cache the peel information for network advertisements.
>
> The object 17f9f635 is not a "commit" but is a "tag". It is
> somewhat unfortunate that "ls-tree -r" reports it as a commit; as
> the command (or anything that deals with a gitlink) is not allowed
> to look at the actual object, it is the best it could do, though.
Yes; thus far GITLINK is only used for commits in submodules so its
reasonable for it to just hardcode the text "commit".
> The "..HEAD" hack looks somewhat ugly. I can guess that the
> reasoning went like "if we stored these in the most natural way, we
> always need a top-level tree that hold two and only two entries,
> HEAD and heads/, which would require us one level of tree unwrapping
> to get to most of the refs" and "HEAD is the only oddball that is
> outside refs/ hierarchy,
Correct.
> others like MERGE_HEAD are ephemeral and
> for the purpose of Gerrit that does not even do working tree
> management, those things that are not necessary in order to manage
> only the committed state can be omitted.", but still...
Yes. I was mostly looking at this from a bare repository server
perspective, not a user working tree. On a bare repository you
probably don't have those special refs like MERGE_HEAD, FETCH_HEAD,
etc.
They could be stored as "..MERGE_HEAD", if you had to. But only HEAD
really matters to hint to clients what to checkout by default on
clone.
next prev parent reply other threads:[~2015-12-17 22:16 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-17 21:02 RefTree: Alternate ref backend Shawn Pearce
2015-12-17 21:57 ` Junio C Hamano
2015-12-17 22:15 ` Shawn Pearce [this message]
2015-12-17 22:10 ` Jeff King
2015-12-17 22:28 ` Shawn Pearce
2015-12-18 1:36 ` Mike Hommey
2015-12-22 15:41 ` Michael Haggerty
2015-12-22 16:11 ` Shawn Pearce
2015-12-22 17:04 ` Dave Borowitz
2015-12-22 17:17 ` Michael Haggerty
2015-12-22 18:50 ` Shawn Pearce
2015-12-22 19:09 ` Junio C Hamano
2015-12-22 19:11 ` Shawn Pearce
2015-12-22 19:34 ` Junio C Hamano
2015-12-23 4:59 ` Michael Haggerty
2015-12-24 1:33 ` Junio C Hamano
[not found] ` <4689734.cEcQ2vR0aQ@mfick1-lnx>
2015-12-22 20:56 ` Martin Fick
2015-12-22 21:23 ` Junio C Hamano
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAJo=hJvwwOooPG2XUbhLZqyDMwsOa1Ba7eoA1AFLkF3BHk5V8Q@mail.gmail.com' \
--to=spearce@spearce.org \
--cc=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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).