我们使用 git 来跟踪/etc/我们服务器上的变化。
管理员在更改 /etc/ 中的文件时以 root 身份工作,因此他们的提交具有作者
root <root@machinename>
Run Code Online (Sandbox Code Playgroud)
这不是很令人满意,因为您看不到哪个管理员实际进行了更改。
我们如何才能在 git 日志中获得真正的管理员名称?我不认为保留存储库的本地克隆是可行的,因为我们经常进行交互更改,直到某些事情起作用为止,并且更改-提交-推送-查看错误-重复循环在这里无济于事。
cwe*_*ske 13
git的作者和提交者的名字可以与环境变量的影响GIT_COMMITTER_NAME,GIT_COMMITTER_EMAIL,GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL。
现在的技巧是在通过 SSH 连接时将这些变量提交到远程服务器:
定义并导出~/.bashrc文件中的变量:
export GIT_AUTHOR_NAME="Christian Weiske"
Run Code Online (Sandbox Code Playgroud)通过调整自动使用 SSH 连接发送它们~/.ssh/config:
SendEnv LANG LC_* GIT_*
Run Code Online (Sandbox Code Playgroud)
LANG并且LC_*不是必需的,但是 Debian 在其默认的 ssh_config 中,所以我想我也应该提交它们
在远程服务器上,调整sshd配置/etc/ssh/sshd_config以接受GIT_*环境变量:
AcceptEnv LANG LC_* GIT_*
Run Code Online (Sandbox Code Playgroud)瞧 -git commit作为根的 a/etc/导致:
commit 8a4654f13241f05361283a88ce041a0fc24b8ac6
Author: Christian Weiske <christian.weiske@netresearch.de>
Run Code Online (Sandbox Code Playgroud)
如果 serverfault 在未来某个时间出现故障:http : //cweiske.de/tagebuch/carry-git-settings.htm
首先,并没有涉及到你的问题,我会劝你尽快停止使用root登录和su和使用用户的登录和sudo代替。将您的root登录限制为仅控制台,或者甚至不是。
也就是说,git commit有一个--author选项可以帮助您:
# git commit --author='Author Name <author@email.address.com>' -a
Run Code Online (Sandbox Code Playgroud)
您还可以仔细使用每个用户的环境变量来设置GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL变量。在日志中,它会出现不同的作者和相同的提交者(root@host),但它会给你更多的审计。当然,这意味着您相信您的管理员会保持变量不变。由于每个人都使用特定的 shell,他们可以sudo使用特定的git变量来根和源文件,在提交时以不同的方式识别每个文件。不太实用,但您甚至可以使用脚本将其自动化。
编辑:当然,@ScottPack 指定的更好的方法是使用配置管理系统,如 Puppet 或 Chef,并使用 git 跟踪中央服务器而不是真实服务器上的更改,因此每个管理员都可以拥有一个工作副本的配置。
| 归档时间: |
|
| 查看次数: |
5886 次 |
| 最近记录: |