From: Jeff King <peff@peff.net>
To: David Aguilar <davvid@gmail.com>
Cc: "Michal Suchánek" <msuchanek@suse.de>,
"Toon Claes" <toon@iotcl.com>,
git@vger.kernel.org
Subject: Re: Shallow clone of a specific git revision?
Date: Fri, 15 Nov 2024 04:37:49 -0500 [thread overview]
Message-ID: <20241115093749.GB1749331@coredump.intra.peff.net> (raw)
In-Reply-To: <ZzbVe79p_Zbnb6rs@gmail.com>
On Thu, Nov 14, 2024 at 09:00:43PM -0800, David Aguilar wrote:
> In case it helps, here's a short recipe demonstrating how to do a
> shallow "clone" of a specific commit ID:
>
> git init the-repo
> cd ./the-repo
> git remote add origin <url>
> git fetch --depth=1 origin <commit-id>
> git checkout <commit-id>
>
> It'd be nice to add this feature to "git clone" for convenience.
Agreed on all parts of this, but wanted to mention one thing here:
> This recipe depends on the server's configuration. You must have one of
> the following configuration variables set "true" server-side in order
> for the server to accept requests for arbitrary commit IDs:
>
> uploadpack.allowReachableSHA1InWant
> Allow upload-pack to accept a fetch request that asks for an
> object that is reachable from any ref tip. However, note that
> calculating object reachability is computationally expensive.
> Defaults to false. Even if this is false, a client may be able
> to steal objects via the techniques described in the "SECURITY"
> section of the gitnamespaces(7) man page; it’s best to keep
> private data in a separate repository.
>
> uploadpack.allowAnySHA1InWant
> Allow upload-pack to accept a fetch request that asks for any
> object at all. Defaults to false.
In the v2 protocol, the reachability checks are gone (as if allowAny was
set). So if the server speaks v2, your instructions should just work.
Most servers should be new enough to support this (and certainly big
forges like GitHub and GitLab do), though note that for git-over-ssh the
server side might need to configure ssh to allow the correct environment
variables. There's discussion in the GIT_PROTOCOL section of git(1).
-Peff
next prev parent reply other threads:[~2024-11-15 9:37 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 12:24 Shallow clone of a specific git revision? Michal Suchánek
2024-11-13 10:23 ` Toon Claes
2024-11-13 10:29 ` Michal Suchánek
2024-11-15 5:00 ` David Aguilar
2024-11-15 9:37 ` Jeff King [this message]
2024-11-15 10:43 ` Michal Suchánek
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=20241115093749.GB1749331@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=msuchanek@suse.de \
--cc=toon@iotcl.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox