我正在寻找确认提交者的电子邮件地址是否为小写的可能性,以避免出现以下问题this https://serverfault.com/questions/12373/how-do-i-edit-gits-history-to-correct-an-incorrect-email-address-name.
我正在考虑实现一个客户端预提交挂钩脚本,该脚本可以将用户名和电子邮件中的大写字符转换为小写字符,或者只是警告用户在 git config 中进行更改。
我不想每次在导入过程中遇到错误时都写这样的东西。不建议这样做,因为它会导致参考值的修改并可能破坏某些内容。
$ git filter-branch --env-filter 'export
GIT_AUTHOR_EMAIL="[email protected] /cdn-cgi/l/email-protection";GIT_AUTHOR_NAME="Yourname"'
如果有其他更好的方法可以实现相同的目标,请建议我。
客户端钩子在我看来并不可靠(客户端总是可以传入 --no-verify,或者只是完全删除钩子)。您需要使用服务器端挂钩来拒绝任何使用错误电子邮件地址提交的推送,然后为最终用户打印有关如何使用正确电子邮件地址重做提交的恢复说明。
如果您在已发布的历史记录中有现有提交,则没有任何非破坏性选项来修复这些提交。
-A
这是一个非常粗糙的示例,仅正确处理现有分支更新。您将需要添加更多案例来处理新分支、删除、标签等,以及有关如何配置电子邮件以及如何使用正确的电子邮件信息重新创建提交的说明。但它应该让你开始。
.git/hooks/更新
refname="$1"
oldrev="$2"
newrev="$3"
for sha in $(git rev-list ${oldrev}..${newrev})
do
git log ${sha} --format="%ae %ce" -1 | grep [A-Z]
if [ $? -eq 0 ]
then
echo "SHA ${sha} contains an illegal email address containing uppercase characters"
git log ${sha} --format="%ae %ce" -1
exit 1
fi
done
如果你尝试推送 SHA,你会得到类似这样的结果
远程:SHA 49511d51548720f774b4a2bed113c43d06c32a34 包含
包含大写字符的非法电子邮件地址远程:[电子邮件受保护] /cdn-cgi/l/email-protection远程:错误:挂钩拒绝更新
refs/heads/master 到 /scratch/email_repo ! [远程拒绝]大师
-> master(挂钩拒绝)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)