On 3/10/2012 3:54 PM, Junio C Hamano wrote:
Neal Kreitzinger<nkreitzinger@xxxxxxxxx> writes:
On 3/8/2012 7:15 PM, Adrian Cornish wrote:
My plan is to use git to keep track of changes in /etc but when
committing I want to have the person making the change specify
themselves as author by adding the --author option on the commandline.
So I would like to stop accidental commits as root.
...
We use whoami in our pre-commit hook to see who the user is that is
doing the commit. I think you could also use GIT_COMMITTER_NAME or
linux $USER environment variables. Either way, the --author seems
like an unnecessary and unreliable way to get the username.
... If people can su to root
then $USER will not work because it will still be set to their
original user name (before they did su to root). Therefore, "whoami"
seems like your best solution.
When people want to raise a red flag against a commit made by root,
they are coming from two different schools.
One is "do not run 'git' or any development tool for that matter
while being root". It is a good discipline to follow in general to
limit what you do with escalated privilege to the minimum.
The other is "record who actually did the work, not 'root' that
people cannot later track down who it actually was". People from
this school do not mind running development tools as root.
And your advice is a good one for the former, but not very relevant
for the latter.
And I think Adrian is asking for the latter.
Now I see. In that case, at the point pre-commit is run git has not
overriden GIT_AUTHOR_IDENT with your --author value, yet. I don't know
if that is a bug or not. The prepare-commit-msg hook is the same way.
However, by the time the commit-msg hook runs git has placed your
--author override into GIT_AUTHOR_IDENT so if you check it there it will
work and you can abort the commit. Of course, at that point the user
has already typed their commit message and may lose it. You could
create a git alias like "git root-commit" that prompts them to enter
their authorname and then runs git-commit --author with that user
provided value. Pre-commit hook could detect root user and error out
telling them to run git-root-commit instead.
v/r,
neal
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html