在提交之前为用户进行git探测

时间:2011-06-13 09:07:32

标签: git

我们是一个开发团队,需要在实验室中使用大型机器。这些机器由PC进行控制,也可以进行开发。实验室PC始终在相同的用户ID下运行。问题是我们希望git commit消息与开发者用户id相关联。一种方法是请求来到机器的每个用户手动运行以下脚本:

git config user.name Foo baz

但问题是这很容易被遗忘。

相反,我认为也许我可以使用git pre-commit钩子来探测用户的id,然后运行上面的命令。但遗憾的是它不起作用,因为在调用预提交挂钩之前,似乎已经查询了user.name字段。

另一个丑陋的想法是使用post-commit钩子获取用户id,然后根据用户输入的名称重写最后一次提交消息。这会有用吗?

有人有解决此问题的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以将不同用户的配置文件存储在不同的位置,然后编写一个脚本以在登录时运行,将$GIT_CONFIG设置为指向用户的配置文件。查看ENVIRONMENT的{​​{1}}部分。

编辑:如果用户使用与其他人相同的shell,您可以在git help config周围编写一个包装器,提示用户,设置环境变量,然后运行真实的git

答案 1 :(得分:1)

我所做的是创建全局配置user.name为:

git config user.name CONFIGUREMEINTHELOCALREPOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

至少对于我的git版本(1.7.5.3),这是一个968字节长的值,可以设置但永远不会被允许提交。 fatal: Impossibly long personal identifier

然后,您可以要求用户将环境变量(1)和/或本地git配置变量设置为允许提交的合理值。

是的,这也假设用户将创建一个新会话(环境变量)或拥有私人仓库(本地配置)。如果人们共享相同的会话(走到一个不安全的预先登录的控制台)我认为你可能大部分都不走运,虽然你可以尝试让$ PROMPT_COMMAND检查空闲时间并取消设置变量或类似的东西,或使用$ TMOUT自动注销。

(1)有问题的环境变量:

       $GIT_AUTHOR_NAME
       $GIT_AUTHOR_EMAIL
       $GIT_COMMITTER_NAME
       $GIT_COMMITTER_EMAIL