Correct user names when tracking /etc/ in git repository and committing as root

etcgitrootvcs

We use git to track changes in /etc/ on our servers.

Administrators work as root when changing files in /etc/, and thus their commits have author

root <root@machinename>

This is not very satisfying since you cannot see which admin actually did the change.

What can we do to get the real admin names in the git log? I don't think that keeping a local clone of the repository is feasible since we often change interatively until something works, and a change-commit-push-seeError-repeat cycle would not help here.

Best Answer

The git author and committer name can be influenced with the environment variables GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL.

Now the trick is to submit those variables to the remote server when connecting through SSH:

  1. Define and export the variables in your ~/.bashrc file:

    export GIT_AUTHOR_NAME="Christian Weiske"
    
  2. Automatically send them with a SSH connection by adjusting ~/.ssh/config:

    SendEnv LANG LC_* GIT_*
    

    LANG and LC_* are not neccesary, but Debian has then in their default ssh_config, so I thought I should submit them, too

  3. On the remote server, adjust the sshd configuration in /etc/ssh/sshd_config to accept GIT_* environment variables:

    AcceptEnv LANG LC_* GIT_*
    

Voila - a git commit as root in /etc/ leads to:

commit 8a4654f13241f05361283a88ce041a0fc24b8ac6
Author: Christian Weiske <christian.weiske@netresearch.de>

In case serverfault faults some time in the future: http://cweiske.de/tagebuch/carry-git-settings.htm

Related Topic