Github API을 사용하면이 작업을 수행 할 수 있지만 리포지토리를 복제하는 것이 훨씬 빠르고 쉽습니다.
특히 get all references이고 지점 용 필터 (refs/heads/...
)입니다. 그런 다음 get the latest commit on each branch을 가져온 다음 저장소의 루트에 도달 할 때까지 부모와 부모를 가져옵니다.
커밋은 여러 부모를 가질 수 있으므로 커밋을 선형으로 저장할 수는 없으므로 그래프를 작성해야합니다.
각 커밋을 가져 오는 작업은 별도의 웹 요청입니다.
그리고 너는 rate limited to 5000 requests per hour입니다.
업데이트를 받으려면 이전에 보았던 커밋을 얻을 때까지이 과정을 반복하십시오. 이것은 적어도 커밋 정보를 어딘가에 저장해야한다는 것을 의미합니다. 리베이스가 브랜치 헤드를 변경할 수 있기 때문에 브랜치 헤드의 ID 만 저장하는 것으로는 충분하지 않습니다.
또는 디스크 공간의 좋은 덩어리를 저장 (그러나 네트워크되지 않음)하는 체크 아웃하지 않고 저장소를 얻을 수있는 베어 복제, git clone --bare
을 할 수 있습니다. 그런 다음 일반적인 Git 절차를 사용하여 기록을 검사하십시오.
Git 저장소 형식은 매우 효율적이며 종종 전체 기록이 현재 체크 아웃 크기보다 크지 않습니다. 네트워크 프로토콜 또한 매우 효율적입니다. 그리고 그것은 단지 git fetch origin
으로 자신을 업데이트하는 방법을 알고 있습니다. 그냥 눈으로 얼핏을 원하는 경우
는 또는 프로젝트의 Github에서 페이지의 Commits
탭을 사용합니다. For example.
아마 https://developer.github.com/v3/ – nullpointer
상기 뭔가를 찾고 커밋 히스토리 *는 저장소입니다.'git log'의 출력처럼 커밋 로그 메시지, 날짜 및 시간을 의미합니까? 저장소를 복제하는 것이 더 나을 것입니다. 웹 API를 통해 가져 오는 것보다 빠르며 업데이트를 관리 할 필요가 없습니다. – Schwern
git ls-remote는 복제 할 필요가없는 몇 가지 명령 중 하나라고 생각합니다. 그러나 커밋을 가져 오지는 않습니다. – pedrorijo91