Search code examples
gitgit-clonegit-lfs

How can I download all git LFS files in batches on mac and linux?


When I'm running git lfs clone somerepository in Windows, I've got the following output

Cloning into 'somerepository'...
remote: Counting objects: 24028, done.
remote: Compressing objects: 100% (5003/5003), done.
remote: Total 24028 (delta 7376), reused 23762 (delta 7265)
Receiving objects: 100% (24028/24028), 7.12 MiB | 3.86 MiB/s, done.
Resolving deltas: 100% (7376/7376), done.
Git LFS: (57 of 57 files) 1.57 GB / 1.57 GB

Last line means git downloaded al files in a few batches (not 1 file at time like git pull) and it's quite quick.

In linux and mac instead, the same command does only the first 6 steps and nor the last one, leaving all LFS-tracked files only as a pointer. If I do a fetch/checkout/pull, git download the content one file at the time andvery slowly. I compared all configuration amongst different Linux/Windows/Mac system and behaviour are all the same with latest version of git and git-lfs.

I'd like to know what is the last command that git lfs clone run and how to trigger it manually or automatically even on Linux and Mac.

Thanks


Solution

  • It worked as expected to me on a Gerrit server:

    > git lfs clone https://USER@GERRIT-SERVER/a/REPOSITORY
    Cloning into 'REPOSITORY'...
    remote: Counting objects: 5, done
    remote: Finding sources: 100% (5/5)
    remote: Total 929 (delta 0), reused 929 (delta 0)
    Receiving objects: 100% (929/929), 151.10 KiB | 0 bytes/s, done.
    Resolving deltas: 100% (275/275), done.
    Checking connectivity... done.
    Git LFS: (2 of 2 files) 1.77 MB / 1.77 MB
    
    > git --version
    git version 2.7.4
    
    > git lfs version
    git-lfs/1.5.3 (GitHub; linux amd64; go 1.7.4; git 23455e48)
    

    $HOME/.gitconfig LFS contents:

    [filter "lfs"]
        clean = git-lfs clean -- %f
        smudge = git-lfs smudge -- %f
        process = git-lfs filter-process
        required = true