Мне нужен программный способ (желательно псевдоним), чтобы определить, был ли репозиторий клонирован с помощью --filter=blob:none или --filter=tree:0, и иметь возможность определить, какой именно.
например:
if git is-treeless; then echo "repo is treeless"; fi
Как бы я это сделал?





В клоне без blobless/treeless я вижу эти ключи в .git/config:
[remote "origin"]
promisor = true
partialclonefilter = combine:blob:none+tree:0
Итак, вы можете попробовать
$ git config remote.origin.promisor
true
$ git config remote.origin.partialclonefilter
combine:blob:none+tree:0
Если у вас много пультов, возможно, вам придется перебирать их, пока не найдете перспективный пульт.
Документы .
Обновление. шелл-код, чтобы проверить, является ли пульт обещанием:
test "`git config remote.origin.promisor`" = true
Код оболочки, проверяющий, является ли клон безблочным, бездеревянным или и тем, и другим:
git config remote.origin.partialclonefilter | grep -Fq blob
git config remote.origin.partialclonefilter | grep -Fq tree
git config remote.origin.partialclonefilter | grep -q 'blob.*tree'
Я пытаюсь выяснить, является ли это безкапельным или безлесным, и я не вижу, чтобы это рассматривалось в вашем ответе. Если без блоба, все в порядке, если без дерева, мне, вероятно, придется клонировать снова, поскольку заполнение недостающих BLOB-объектов в бездеревянном клоне занимает вечность.