$ git clone --no-checkout $URL/repo.git
$ cd repo/
$ git sparse-checkout init
$ git sparse-checkout set subdirectory_i_want
$ git checkout main
The command above downloads the whole repo history. You could do a depth=1 to skip the history, but it still downloads the he latest version of the entire repo tree.
Combined with --depth=1 and the --no-checkout / --sparse-checkout flow that the GP already described.
I just tested on the emacs repo, left column is disk usage of just the `.git` folder inside:
Shallow clones (depth=1):
124K: Treeless clone depth=1 with no-checkout
308K: Blobless clone depth=1 with no-checkout
12M: Treeless clone depth=1 sparse checkout of "doc" folder
12M: Blobless clone depth=1 sparse checkout of "doc" folder
53M: Treeless clone depth=1 non-sparse full checkout
53M: Blobless clone depth=1 non-sparse full checkout
53M: Regular clone with depth=1
Non-shallow clones:
54M: Treeless clone with no-checkout
124M: Blobless clone with no-checkout
65M: Treeless clone sparse checkout of "doc" folder
135M: Blobless clone sparse checkout of "doc" folder
107M: Treeless clone with non-sparse full checkout
177M: Blobless clone with non-sparse full checkout
653M: Full regular git clone with no flags
Great tech talk covering some of the newer lesser-known git features: https://www.youtube.com/watch?v=aolI_Rz0ZqYCould've been a shell script[2]
[1] https://github.com/zikani03/git-down/blob/cb2763020edc81e464...
mkdir -p <out_dir> && git archive --remote=<remote> --format=tar.gz <branch> <files...> | tar -xzC <out_dir>
Strangely, github does not support this, so tested with bitbucket.Actually doing this in Rust with lower-level libraries like gix would have been interesting.
svn checkout https://github.com/tensorflow/tensorflow/trunk/tensorflow/ex...
luismedel•4h ago
And then we wonder how the fuck we end with malware in our systems.
panki27•4h ago