Вы можете сделать это, используя Github API, но гораздо быстрее и проще просто клонировать хранилище.
В частности, вы бы использовали get all references и фильтр для филиалов (refs/heads/...
). Затем get the latest commit on each branch, а затем заберите его родителей и родителей родителей и т. Д., Пока не дойдете до корня репозитория.
Помните, что у фиксации может быть несколько родителей, поэтому вы не можете просто сохранить фиксации линейно, вам нужно построить график.
И получение каждой фиксации является отдельным веб-запросом.
И вы - rate limited to 5000 requests per hour.
Чтобы получать обновления, повторите процесс, пока не достигнете фиксации, которую вы видели раньше. Это означает, что вам нужно будет хранить информацию о ком-то где-нибудь, по крайней мере, фиксации, которые вы видели. Недостаточно хранить только идентификаторы заголовков филиалов, потому что они могут изменить их.
Или вы можете сделать голый клон, git clone --bare
, чтобы получить хранилище без проверки, что позволит сэкономить хороший кусок дискового пространства (но не сети). Затем используйте обычные процедуры Git для изучения истории.
Формат репозитория Git чрезвычайно эффективен, часто полная история не превышает размер текущей проверки. Его сетевые протоколы также очень эффективны. И он знает, как обновить себя только git fetch origin
.
Или, если вы просто хотите быстрый взгляд на глаз, используйте вкладку Commits
на Github странице проекта. For example.
Вероятно, глядя на что-то на https://developer.github.com/v3/ – nullpointer
commit history * - это * репозиторий.Вы имеете в виду только сообщения журнала фиксации, даты и время, такие как вывод 'git log'? Вам, вероятно, лучше всего клонировать репозиторий, он будет быстрее, чем пытаться получить его через веб-API, и вам не нужно управлять обновлениями. – Schwern
Я думаю, что git ls-remote - одна из немногих команд, в которых вам не нужно клонировать, но она не приносит вам коммитов – pedrorijo91