Este script curto pode ser usado para alcançar o que você deseja, desde que você tenha configurado corretamente como seu usuário regular. Ele aceita todos e quaisquer argumentos que git commit
faça, exceto --author
(que ele gera automaticamente), e solicitará automaticamente uma senha, para que você não precise executá-lo com sudo
:
#!/bin/bash
name='git config --get user.name'
email='git config --get user.email'
author="${name} <${email}>"
sudo git commit --author "$author" $@
Ele extrai seu nome e e-mail da configuração do git do seu usuário, compõe as informações do autor e invoca o git para criar o commit. Você pode substituir commit
por qualquer outro subcomando git que gere commits e aceite o argumento --author
.
Como alternativa, clone o repositório como usuário regular (via um clone SSH, portanto, para o seu /var/www
example, seria git clone root@localhost:/var/www
), faça seus commits como usuário regular e, em seguida, envie-os para o repositório principal . Isso dá a você um pouco mais de liberdade para gerenciar sua cópia como quiser, mas requer que as pessoas possam fazer login como root sobre ssh na interface de loopback.
Observe, no entanto, que você deseja ter cuidado ao usar o git diretamente com etckeeper
, se adicionar ou remover arquivos /etc/.etckeeper
precisa ser atualizado corretamente. Isso acontece automaticamente se você usar etckeeper commit
(que infelizmente não suporta autoria arbitrária de commits), mas não se você apenas fizer git commit
.