|Re: [ecf-dev] JavaDoc (or lack thereof)|
On 27 May 2011, at 18:11, Wayne Beaton wrote:
Yes, I believe so. The author of a commit should really remain the same, as it shows who originated the code in the first place. That's how you can get traceability of the code in the first place.
Git has the concept of a 'signed off by' which is used to attach information about someone who approves a commit. This can be done with git commit -s on the change(s) in question.
In places like GitHub, the author is shown as the author, and the committer is the person who has the signed-off-by annotation. The reason for having this is to record some kind of approval of the change but whilst still maintaining the traceability to the author. (It also means you don't need to muck around with the rewriting authorship history or doing nasty things -- a commit --amend -s will be enough for you to add your approval to someone else's change.
Add Signed-off-by line by the committer at the end of the commit
Gerrit also presents 'author' versus 'committer' as separate fields. For example:
On the other hand, there are cases where these differ:
The point is that the Author is always the person who originated the change, whereas the Committer is the person who put that change in the repository. Many times they are the same person but when they differ, the Author identifies who wrote it and the Commiter represents who approved its inclusion in the history.
In other words, I think the advice at the moment is entirely backwards :)
What I would suggest is that we use the 'signed-off-by' to require a committer on the project but the author can be anyone. So the people who can commit to a project either show up as authors, or as signatories to other changes.
Note that it's also somewhat conventional to add the 'signed-off-by' field to your own commits.
EGit has an option to 'add signed-off-by' upon commit as well.
In other words, signed-off-by is perfect for this use case :)
PS If the submitted change is a single commit, then a committer can pull the change, then do a commit amend with the signoff without having to do any rewriting. It'll change the commit id but will save you having to run lots of command line commands to work. If it's multiple then you need to do a rebase type op to add the committer names on.