From: Jonathan Nieder <jrnieder@gmail.com>
To: Alexander Mills <alexander.d.mills@gmail.com>
Cc: git@vger.kernel.org, "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Bryan Turner" <bturner@atlassian.com>
Subject: Re: cannot clone --single-commit instead of --single-branch
Date: Thu, 1 Aug 2019 19:57:28 -0700 [thread overview]
Message-ID: <20190802025728.GD54514@google.com> (raw)
In-Reply-To: <CA+KyZp6mYx4C22syAu=W2Okf7tDwtQ+7vVUBaQ-2D70PTS+GaA@mail.gmail.com>
(cc: Duy, who might enjoy this walk through history)
Hi,
Alexander Mills wrote:
> git clone --single-branch=<sha>
>
> doesn't seem to work?
I've occasionally wanted something like this (actually, I've wanted to
pass a refname like "refs/meta/config"). builtin/clone.c contains
static struct ref *find_remote_branch(const struct ref *refs, const char *branch)
{
struct ref *ref;
struct strbuf head = STRBUF_INIT;
strbuf_addstr(&head, "refs/heads/");
strbuf_addstr(&head, branch);
ref = find_ref_by_name(refs, head.buf);
strbuf_release(&head);
if (ref)
return ref;
So far, what one would expect.
strbuf_addstr(&head, "refs/tags/");
strbuf_addstr(&head, branch);
ref = find_ref_by_name(refs, head.buf);
strbuf_release(&head);
Wait a second: a tag isn't a branch, so why do we accept it as a
value for --branch? So this is stretching definitions a little
already.
"git log -L:find_remote_branch:builtin/clone.c" tells me this is from
v1.7.10-rc0~125^2~3 (clone: allow --branch to take a tag, 2012-01-16):
Because a tag ref cannot be put to HEAD, HEAD will become detached.
This is consistent with "git checkout <tag>".
I think ideally we could first check for a sha1 and then try the full
set of patterns from ref_rev_parse_rules. What do you think? Would
you be interested in taking a stab at it?
Thanks,
Jonathan
prev parent reply other threads:[~2019-08-02 2:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-01 20:52 cannot clone --single-commit instead of --single-branch Alexander Mills
2019-08-01 22:40 ` Bryan Turner
2019-08-02 2:43 ` Jonathan Nieder
2019-08-02 3:07 ` Mike Hommey
2019-08-02 2:57 ` Jonathan Nieder [this message]
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=20190802025728.GD54514@google.com \
--to=jrnieder@gmail.com \
--cc=alexander.d.mills@gmail.com \
--cc=bturner@atlassian.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
/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).