用于设置用户名和电子邮件的git钩子

问题描述 投票:0回答:1

是否可以编写一个git钩子来设置第一次提交之前的用户名和电子邮件?应根据已配置的参数(例如存储库/域正则表达式或其他参数)来设置用户名和电子邮件。

我尝试编写不同的类型,但仅在配置更改after第一次提交时成功了。

编辑

我的代码如下(基于Create a global git commit hook):

.git-templates/hooks/ -> cat pre-commit 
#!/bin/bash
remote=$(git config --get remote.origin.url)
if [ -n "$remote" ]; then
    if [[ $remote =~ "specific_domain" ]]; then
        git config user.email "myname@specific_domain.tld"
        git config user.name "Firstname Lastname"
    else
        git config user.email "pseudonym@general_domain.tld"
        git config user.name "pseudonym"
    fi
fi
git githooks
1个回答
0
投票

Git在运行您的预提交钩子时已经设置了所有信息。您可以通过编写此始终失败的预提交钩子来观察此情况:

#! /bin/sh

echo pre-commit hook run
env | grep GIT
exit 1

注意已设置GIT_AUTHOR_NAMEGIT_AUTHOR_EMAILGIT_AUTHOR_DATE。这些是将提交的值。由于它们是环境变量,因此您对钩子所做的任何更改都不会对父Git进程产生影响。

可以要做的是编写一个预提交钩子,该钩子检查名称和电子邮件地址是否正确设置。如果不是,则可以立即更新它们并退出1,或者打印一条提醒以对其进行配置(以及实际的git config命令,适用于剪切和粘贴)并退出1。这不是完美的方法,但可以处理许多用例。

© www.soinside.com 2019 - 2024. All rights reserved.