Наименее напряженный способ проверить головы git-репо с помощью инструмента git CLI - PullRequest
1 голос
/ 03 апреля 2019

Какой наименее стрессовый способ заставить сервер git перечислить все коммиты из репо?

Более конкретно, я буду делать это много для большого количества git-репозиториев, поэтому чрезвычайно важно оптимизировать время запроса, чтобы не взламывать серверы.

Это должно быть очевидно, но: клонирование не вариант.

(В будущем это будет сделано намного эффективнее, но сейчас мне просто нужно подтверждение концепции моей федеративной вещи .)

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Git предоставляет команду ls-remote, которую вы можете использовать. Например:

$ git ls-remote https://github.com/git/git.git
041f5ea1cf987a4068ef5f39ba0a09be85952064        HEAD
aeb582a98374c094361cba1bd756dc6307432c42        refs/heads/maint
041f5ea1cf987a4068ef5f39ba0a09be85952064        refs/heads/master
f8f6787159eebeb0fe8766e114123185ee1893ea        refs/heads/next
55070086a7b72850cce2e7e1688deb53114aac65        refs/heads/pu
be6eed6d9f1c0dfa4a732832c506318f916caf09        refs/heads/todo
f0d0fd3a5985d5e588da1e1d11c85fba0ae132f8        refs/pull/10/head
[...]

Это самый дешевый вариант, который вы можете использовать, но имейте в виду, что большинство хостинг-провайдеров будут ограничивать вас в любом случае. Ваши инструменты должны научиться отступать, если они выполняют автоматизированную обработку репозиториев.

Вы также можете делать запросы непосредственно к части /info/refs?service=git-upload-pack URL, что по сути эквивалентно.

0 голосов
/ 04 апреля 2019

Что если вы клонируете, но не извлекаете какие-либо файлы?

  1. Создайте новую папку
  2. Запустите git init, чтобы инициализировать его как репозиторий git
  3. Выполнить git clone -n [git://path/to/repo.git]

Это сделает новую папку «репо» внутри вашей новой папки, без файлов репо, только в папке .git /.Тогда вы можете взглянуть на все, что вам нужно.

Все еще больно, и вы сказали, что клонирования нет, но это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...