From: Junio C Hamano <junkio@cox.net>
To: Petr Baudis <pasky@suse.cz>
Cc: <git@vger.kernel.org>
Subject: Re: [PATCH 4/4] server info: Add HEAD to info/refs
Date: Thu, 26 Apr 2007 20:51:36 -0700 [thread overview]
Message-ID: <7vhcr2qxtj.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <20070427020608.22991.29273.stgit@rover> (Petr Baudis's message of "Fri, 27 Apr 2007 04:06:08 +0200")
Petr Baudis <pasky@suse.cz> writes:
> For some reason, HEAD was not listed in info/refs until now, which means
> that git-ls-remote does not return it for dumb transports while the native
> transports show it. It would be nice to have it because of git-mirror and
> possibly other nifty stuff.
Hmmm. I know why you want to do this, but honestly speaking,
this is going somewhat backwards. Maybe one step back, before
going two steps forward.
I always considered it was a bug that the native transport sends
SHA-1 of HEAD after dereferencing the symref, instead of saying
which branch it points at. You would understand (or more
likely, "remember", as I suspect you have in the past looked at
what git-clone does and git-clone-pack used to do) what yuck
factor this introduced to git-clone.
The info/refs files is designed to mimick peek-remote output (I
know you looked at ls-remote implementation that has "case-esac"
that switches on transport, whose output is piped to the same
filtering loop), but HEAD SHA-1 is not needed in this file to
support dumb transports, as we try to read HEAD symref by hand
when cloning over http.
Longer term, I would want to have a protocol extension to the
native stuff to additionally send the symref information, so
that git-clone does not have to guess. At the same time, we
would probably want to update the output from git-peek-remote so
that it can say which branch HEAD points at more explicitly, and
in such way that does not break older clients too badly. We
would need to update the file format of info/refs at the same
time if we update git-peek-remote.
How about proceeding along these lines?
* We take this patch to add HEAD SHA-1 to info/refs;
* We add --symref option to git-ls-remote; without the option,
its last "while read sha1 path" loop filters out lines that
begin with "->";
* We add native protocol extension to let upload-pack to say
what HEAD symref points at, in addition to the SHA-1 HEAD
points at. Update peek-remote to show this information like
this:
->refs/heads/master<TAB>HEAD<LF>
0d5e6c97...<TAB>HEAD<LF>
...
* We also enhance update-server-info to generate similar ->
information.
* We update git-clone to use --symref when it calls
git-ls-remote; if it can figure out which branch the remote
HEAD points at (because the remote side has newer git), it
uses that information to set the HEAD branch instead of
guessing.
Hmm?
next prev parent reply other threads:[~2007-04-27 3:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-27 2:06 [PATCH 1/4] Git.pm: config_boolean() -> config_bool() Petr Baudis
2007-04-27 2:06 ` [PATCH 2/4] Git.pm: Add remote_refs() git-ls-remote frontend Petr Baudis
2007-04-27 2:06 ` [PATCH 3/4] [PATCH] git-mirror - exactly mirror another repository Petr Baudis
2007-04-27 4:39 ` Shawn O. Pearce
2007-04-27 2:06 ` [PATCH 4/4] server info: Add HEAD to info/refs Petr Baudis
2007-04-27 3:51 ` Junio C Hamano [this message]
2007-04-27 4:28 ` Petr Baudis
2007-04-27 4:36 ` Junio C Hamano
2007-04-28 6:27 ` [PATCH 1/4] Git.pm: config_boolean() -> config_bool() Junio C Hamano
2007-05-09 10:49 ` [PATCH] " Petr Baudis
2007-05-09 15:13 ` Petr Baudis
2007-05-10 2:12 ` Junio C Hamano
2007-05-09 15:24 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vhcr2qxtj.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=git@vger.kernel.org \
--cc=pasky@suse.cz \
/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.