Читаю официальные доки по 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
откатывается полностью.
2024.05.02 in versioning