사용자 리포지토리를 반복하는 것은 다른 리포지토리에서 커밋을하지 못하기 때문에 최적이 아닙니다. 더 좋은 방법은 대신 Events API을 사용하는 것입니다.
첫 번째 단계는 get the user's events이다 :
GET /users/:username/events
다음은 당신이 항목 where result.type
is set to PushEvent
확인, 반환 된 이벤트를 통해 반복해야합니다. 이들 각각은 사용자가 git push
에 해당하며 해당 푸시의 커밋은 result.payload.commits
과 같이 역순으로 사용할 수 있습니다.
commit.author.email
이 예상 한 것과 일치하는지 확인하여 다른 사용자가 작성한 커밋을 무시하도록 필터링 할 수 있습니다. 또한 해당 객체에 sha
, message
및 url
과 같은 속성에 대한 액세스 권한이 있으므로 distinct
속성을 사용하여 여러 푸시에서 중복 커밋을 제거 할 수 있습니다.
전반적으로 더 많은 법률 업무가 있지만 사용자가 실제로 저지른 것을 훨씬 정확하게 표현할 수 있습니다.
const USER = 'TODO: your GitHub user name'
const EMAIL = 'TODO: your GitHub email address'
const github = require('octokat')({ token: 'TODO: your GitHub API token' })
return github.fromUrl(`https://api.github.com/users/${USER}/events`)
.fetch()
.then(events => {
let lastCommit
events.some(event => {
return event.type === 'PushEvent' && event.payload.commits.reverse().some(commit => {
if (commit.author.email === EMAIL) {
lastCommit = {
repo: event.repo.name,
sha: commit.sha,
time: new Date(event.createdAt),
message: commit.message,
url: commit.url
}
return true
}
return false
})
})
return lastCommit
})
:이 도움이 경우
는 여기에 몇 가지 example code 내 마지막 사용자에 대한 커밋 가져 오기 위해 위의 방법을 사용하여 웹 사이트 (Node.js를 사용하여 구현하고 octokat
npm module)에서 가져온입니다