As explained before by Zack, it might happen that you co-administer a machine and have /etc under some VCS (which you should anyway by using etckeeper).

There are a few problems like detecting the identity of the committer and don't leave /etc with uncommitted changes so I recently came up with a slighly different solution than the one we thought two years ago (besides switching from bzr to git).

Take committer name/email from ~/.gitconfig of the user owning the tty or GIT_CONFIG or GIT_CONFIG_LOCAL if they are set.

Trap a function on shell's EXIT rather than loop on .bash_logout which applies only to login shell. The resulting code to be put in /root/.bashrc:


# export GIT_* variables
if [ -f "$git_functions" ]; then
  . "$git_functions"

case $- in
*i*)    # interactive shell
    if [ -f "$git_functions" ]; then
      . "$git_functions"
      if ! git_etc_status; then
        echo "Uncommitted changes to /etc found, please commit them"
        bash -$-
  trap check_uncommitted EXIT

Where git-etc-common is to be found here.