У меня есть небольшой репозиторий Git, который был создан следующим образом:
mkdir repo
cd repo
git init
git remote add origin $URL
git fetch --depth 1 origin $SHA
Как часть моего процесса сборки, я хотел бы использовать git describe --tags
для описания ревизии относительно ее тега ближайшего предка. Так как я только что выбрал нужную мне ревизию, он не может этого сделать, потому что не знает ни об одном из моих предков.
Итак, у меня была мысль написать простой bash
скрипт для углубления истории по мере необходимости:
GIT_HEAD=$(git rev-parse HEAD)
until git describe --tags
do
git fetch --deepen 100 origin $GIT_HEAD
done
Это не работает, потому что, как сказано в документации для git-fetch
:
- глубина =
Ограничить выборку указанным числом коммитов из кончика истории каждой удаленной ветви. Если
выборка в неглубокое хранилище, созданное git clone с параметром --depth = (см. git-
clone (1)), углубить или сократить историю до указанного количества коммитов. Теги для
углубленные коммиты не извлекаются.
Затем я попытался использовать git fetch --tags
для получения списка тегов, и это работает, но он также выбирает данные фиксации для каждого тега. Репозиторий, с которым я работаю, имеет большую историю и множество тегов, и это приводит к значительному использованию диска / сети / времени (поэтому для начала я использую мелкий клон!).
Есть ли способ заставить Git получать только SHA для тегов, чтобы я мог сопоставить их со списком ревизий моего репозитория при попытке углубить историю? В качестве альтернативы, есть ли способ, которым я могу сделать небольшую выборку из истории репозитория, также получая теги, связанные с этой глубиной?