git-http-backend - 覆盖提交作者姓名

git-http-backend - override commit author name

这是我的测试 CGI 脚本:

#!/bin/bash

echo "$(date) - REQUEST_METHOD[$REQUEST_METHOD] \
GIT_COMMITTER_NAME[$GIT_COMMITTER_NAME] \
GIT_COMMITTER_EMAIL[$GIT_COMMITTER_EMAIL] \
REMOTE_USER[$REMOTE_USER] \
GIT_AUTHOR_NAME[$GIT_AUTHOR_NAME] \
GIT_AUTHOR_EMAIL[$GIT_AUTHOR_EMAIL]" >> /tmp/git_cgi_test.log

/usr/lib/git-core/git-http-backend

"git push" 在 /tmp/git_cgi_test.log 中输出:

Thu Jul  7 11:07:28 CEST 2016 - REQUEST_METHOD[GET] GIT_COMMITTER_NAME[foo] GIT_COMMITTER_EMAIL[foo@exemple.loc] REMOTE_USER[auth_basic_user] GIT_AUTHOR_NAME[bar] GIT_AUTHOR_EMAIL[bar@exemple.loc]
Thu Jul  7 11:07:28 CEST 2016 - REQUEST_METHOD[POST] GIT_COMMITTER_NAME[foo] GIT_COMMITTER_EMAIL[foo@exemple.loc] REMOTE_USER[auth_basic_user] GIT_AUTHOR_NAME[bar] GIT_AUTHOR_EMAIL[bar@exemple.loc]

=> 似乎在 CGI 脚本中设置并可见网络服务器环境变量。

"git log" 裸 git 回购:

commit 688a98573c5a7559d0fdfb7ff823add3ba0e3a17
Author: remote_os_user <remote_os_user@remote_os_hostname>
Date:   Thu Jul 7 11:07:22 2016 +0200

    the commit comment
...

=> 既不是 "foo" 也不是 "bar" 也不是 "auth_basic_user",而是 "remote_os_user" :(

==> 必须为 git-http-backend 设置哪些环境变量才能覆盖最终 git 回购中的作者姓名?

(我不控制远程贡献者笔记本电脑上的 user.name 或 user.email。我需要在服务器端覆盖)

我也喜欢这样,但是当推送到您的中央 git 存储库时,不可能更改提交(而不破坏它们)。请参阅 this 讨论。