Получить только теги / ссылки на удаленный репозиторий git - PullRequest
0 голосов
/ 05 октября 2018

Можно ли получить теги / ссылки на хранилище (например, GitHub) без загрузки объектов / файлов?

Мой пример использования заключается в упаковке последней бета-версии некоторого программного обеспечения, которое имеет долгую историю ипоэтому достаточно для клонирования.

В идеале после определения тега, который я хочу использовать, я могу:

git clone -b "$tag" --depth=1

1 Ответ

0 голосов
/ 05 октября 2018

Использование git ls-remote:

$ git ls-remote -t --refs <URL>

Это дает вывод, такой как:

8f235769a2853c415f811b19cd5effc47cc89433        refs/tags/continuous
24e666ed73486a2ac65f09a1479e91e6ae4a1bbe        refs/tags/continuous-develop
7c2cff2c26c1c2ad4b4023a975cd2365751ec97d        refs/tags/v2.0
35b69eed46e5b163927c78497983355ff6a5dc6b        refs/tags/v2.0-beta10

Вы, вероятно, также хотите передать --exit-code, чтобы обеспечитьnon- 0 выход, если не возвращены соответствующие ссылки.

Чтобы получить только имена тегов, введите:

sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g':

$ git ls-remote -t --exit-code --refs https://github.com/robert7/nixnote2.git \
  | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g'
continuous
continuous-develop
v2.0
v2.0-beta10

Предложения:

  • Пропустите --exit-code, чтобы обеспечить выход не 0, если не возвращены соответствующие ссылки.
  • Используйте версию https://: это быстрее, и если вы упаковываетеВы не хотите подвергаться риску того, что вас попросят ввести ключ ssh.
  • --sort=-v:refname для сортировки по версии, а не по лексографическому признаку, и самые большие версии вверху
  • Use git -c versionsort.suffix=- для предотвращения 2.0-rc «после» 2.0
  • Добавить шаблон в конце командной строки для фильтрации.Например, 'v*', если все теги версий начинаются с v.
.
...