Reputation: 43501
[
{
"url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e",
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
"commit": {
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e",
"author": {
"name": "Monalisa Octocat",
"email": "[email protected]",
"date": "2011-04-14T16:00:49Z"
},
"committer": {
"name": "Monalisa Octocat",
"email": "[email protected]",
"date": "2011-04-14T16:00:49Z"
},
"message": "Fix all the bugs",
"tree": {
"url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e",
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e"
}
},
"author": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat",
"html_url": "https://github.com/octocat",
"followers_url": "https://api.github.com/users/octocat/followers",
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
"organizations_url": "https://api.github.com/users/octocat/orgs",
"repos_url": "https://api.github.com/users/octocat/repos",
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/octocat/received_events",
"type": "User",
"site_admin": false
},
"committer": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat",
"html_url": "https://github.com/octocat",
"followers_url": "https://api.github.com/users/octocat/followers",
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
"organizations_url": "https://api.github.com/users/octocat/orgs",
"repos_url": "https://api.github.com/users/octocat/repos",
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/octocat/received_events",
"type": "User",
"site_admin": false
},
"parents": [
{
"url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e",
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e"
}
]
}
]
that is the response for GET /repos/:owner/:repo/commits
What is the difference between the author
and committer
?
Upvotes: 5
Views: 1350
Reputation: 51
I have the impression that this functionality supported by git, does not reflect in all GitHub repositories.
For example, looking at Ansible/Ansible or PyGithub/PyGithub, the two fields - author and committer - are always equal.
Let's say user A forks the master of repository R, commits a change C and requests a pull request P to R's gatekeeper G to include C. G merges pull request P and thereby commit C is included in the master branch of R.
Now, looking at the commits of master branch R, we see two entries :
1 The commit C, as A made on his fork of R. This commit has as author and committer user A.
2 A commit representing pull request P. This represents the inclusion of the changes in C by G to R's master branch. This commit has user G as author and committer, although he has not written any of that code.
My guess is thus that these two fields support code origin identity, if used properly with git. In some cases - as described above - this might not be the case. And therefor the author field does not always represented the person who wrote the code originally.
Does that make any sense? If not, have a look at some example cases on the PyGithub repository mentioned above.
Upvotes: 3
Reputation: 94459
The author is the individual who wrote the code contained within the commit. The committer is the individual who committed the code to the repository. This is necessary to discern between the author and committer when a pull-request is used to update a repository.
When using a pull request an individual forks a repository, makes changes and then requests that those changes be pulled into the original repository. Usually an individual for the initial repository will act as the gate keeper, reviewing, approving and denying pull requests.
Pro Git describes the difference in this manner:
The author is the person who originally wrote the work, whereas the committer is the person who last applied the work. So, if you send in a patch to a project and one of the core members applies the patch, both of you get credit --- you as the author and the core member as the committer.
Upvotes: 7