Не качаем из git лишнее

Читаю официальные доки по Google App Engine, и там, чтобы запустить hello world, предлагают совершить следующее:

> git clone https://github.com/GoogleCloudPlatform/python-docs-samples
> du -sh python-docs-samples
479M    python-docs-samples
> cd python-docs-samples/appengine/flexible/hello_world
> du -sh .
 31M    .
> wc -l *
     138 total

Ради 138 строк выкачать пол-гигабайта, нормально.

Теперь то же самое через sparse checkout:

> cat git-clone-sparse
REPO_URL="$1"
SUB_DIR="$2"
REPO_NAME=$(basename "$REPO_URL")
set -xe
git clone -n --depth=1 --filter=tree:0 "$REPO_URL"
cd "$REPO_NAME"
git sparse-checkout set --no-cone "$SUB_DIR"
git checkout
cd "$SUB_DIR"
pwd

> git-clone-sparse \
  'https://github.com/GoogleCloudPlatform/python-docs-samples' \
  'appengine/flexible/hello_world'

Результат:

> du -sh python-docs-samples
984K    python-docs-samples

Пятьсот мегабайт ужались до одного. Неплохо, но может можно ещё лучше?

Я так подозреваю, это ещё и хороший способ выкачать большой репозиторий целиком, но при плохой связи. Потому что если что-то идёт не так, то clone откатывается полностью.