问题描述
|
我们是一个开发团队,需要在实验室中的大型计算机上工作。这些机器由也进行开发的PC控制。实验室PC始终以相同的用户ID运行。问题是我们希望git commit消息由开发人员用户ID关联。一种方法是请求来到计算机上的每个用户手动运行一个脚本,该脚本执行以下操作:
git config user.name Foo baz
但问题是,这很容易被遗忘。
取而代之的是,我想到可以使用ѭ1probe钩子来探测用户的ID,然后运行上面的命令。但不幸的是,它不起作用,因为似乎在调用pre-commit钩子之前已经查询了user.name字段。
另一个丑陋的想法是使用提交后挂钩获取用户ID,然后根据用户输入的名称重写最后的提交消息。这行得通吗?
有人对此问题有解决方案吗?
解决方法
您可以将不同用户的配置文件存储在不同位置,然后编写一个在登录时运行的脚本,该脚本将ѭ2设置为指向用户的配置文件。查看
git help config
的ENVIRONMENT
部分。
编辑:如果用户使用与其他用户相同的shell,则可以在ѭ5周围编写一个包装程序,以提示用户,设置环境变量,然后运行真实的git
。
, 我所做的是将全局配置user.name创建为:
git config user.name CONFIGUREMEINTHELOCALREPOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
至少对于我的git(1.7.5.3)版本而言,它是一个968字节长的值,可以设置但永远不允许提交。 fatal: Impossibly long personal identifier
然后,您可以要求用户将环境变量(1)和/或本地git config变量设置为允许提交的合理值。
是的,这也假设用户将创建一个新会话(环境变量)或拥有一个私有存储库(本地配置)。如果人们共享同一个会话(进入控制台中不安全的预先登录),尽管您可以尝试让$ PROMPT_COMMAND检查空闲时间并取消设置变量或类似的内容,但我认为您可能很不幸。 ,或使用$ TMOUT自动注销。
(1)有关的环境变量:
$GIT_AUTHOR_NAME
$GIT_AUTHOR_EMAIL
$GIT_COMMITTER_NAME
$GIT_COMMITTER_EMAIL