git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: clone (single) commit id?

From
PHPatrik Hägglund <patrik.h.hagglund@gmail.com>
Date
Aug 17, 2023, 20:20 UTC
Message-ID
<CABtpZSFT2BLJpeDwizZiXB8+tRRLqz+iAFuWaXAiwH_EgS5gag@mail.gmail.com>
In-Reply-To
<20230817195641.GD3032779@coredump.intra.peff.net>

As said, I want to use a commit id for reproducability and performance. The CI flow starts several jobs, all using the same commit id. A remote branch may be updated, and therefore considered not good (reproducible) enough as the reference here.

(Regarding you proposal of using partial clones: Unfortunately, our remote server don't support filtering yet.)

On Thu, Aug 17, 2023 at 9:56 PM Jeff King <peff@peff.net> wrote:
Show 39 quoted lines
>
> On Thu, Aug 17, 2023 at 09:45:19PM +0200, Patrik Hägglund wrote:
>
> > In our CI setup, for reproducibility and performance reasons, I want
> > to be able to clone a repository with only a single given commit id
> > (commit hash). (Using 'git init' + 'git fetch' + 'git checkout' is
> > possible, but more elaborate/low-level.)
> >
> > At https://lore.kernel.org/git/MN2PR12MB3616C1F2E97A18547740651DF9E29@MN2PR12MB3616.namprd12.prod.outlook.com/
> > it is stated that:
> >
> > > Never mind, I see, feature exists but server needs to allow it. Sigh.
> >
> > However, I'm not able to find this in the Git documentation. Can
> > someone point out how to configure this? Can this be better
> > documented?
>
> I'd use a shallow clone with depth 1, like:
>
>   git clone -b $your_branch --depth 1 $remote_url
>
> Note that "--depth" implies --single-branch, so it will really just grab
> that one branch (and if it's the remote's default branch that you want,
> you can omit the "-b $your_branch" part).
>
> If you find the shape of history useful (e.g., your CI wants to look at
> just new commits), you might also find partial clones useful. Something
> like:
>
>   git clone --filter=blob:none $remote_url
>
> will fetch all commits and trees, but only load blobs on-demand (so
> basically whatever is needed to check out that tip commit). You can
> pare it down further by switching to "--filter=tree:0", which will avoid
> trees (but note that filling in trees when you need them is a bit more
> expensive, since inherently you have to make a round-trip to the server
> for each level of tree).
>
> -Peff
Previous: Jeff KingNext: Jeff King
Message 3 of 4 in “clone (single) commit id?”
  1. Patrik HägglundAug 17, 2023
  2. Jeff KingAug 17, 2023
  3. Patrik HägglundAug 17, 2023
  4. Jeff KingAug 17, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.