如何强制用户在 GIT 中使用小写电子邮件地址

2023-12-26

我正在寻找确认提交者的电子邮件地址是否为小写的可能性,以避免出现以下问题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(使用前将#替换为@)

如何强制用户在 GIT 中使用小写电子邮件地址 的相关文章

随机推荐

  • C# listview - 嵌入控件

    任何人都可以帮助我在列表视图中嵌入控件吗 我需要添加按钮控件作为列表视图的子项 谢谢 好吧 您可能正在谈论 Windows 窗体ListView http msdn microsoft com en us library system wi
  • Twitter Bootstrap 导航栏菜单滚动

    使用时twitter bootstrap 3 在移动设备菜单上nabber有水平和垂直滚动条 它不在那里2 3我不知道如何禁用它并让菜单项扩展至完整而没有任何滚动条 这是 Bootstrap 3 的新功能 最好的方法是删除或注释掉 less
  • 是否可以将JavaFX的WebView更改为Chrome

    我们正在尝试创建一个使用 html5 canvas 打开 url 的桌面应用程序 我们使用 Java 8 JavaFX 实现它 但我们在渲染草图时遇到了糟糕的反应 这在 Chrome 浏览器中运行良好 是否可以在JavaFx应用程序中嵌入c
  • 拆分 pandas 中的地址列

    我有一个像这样的熊猫数据集 import pandas as pd data id 001 002 003 004 address William J Clare n290 Valley Dr nCasper WY 82604 nUSA 1
  • 为什么 Boost.Spirit 能够正确地将标识符解析为 std::string,而不是解析为仅由 std::string 组成的改编结构?

    我为标识符定义了一条规则 以字母字符开头 后跟任意数量的字母数字字符 当我直接解析为时 我得到不同的结果std string与包含单个的改编结构相比std string 如果我的语法的属性是std string Qi 会正确地将字符顺序调整
  • 如何设置程序的CPU亲和力?

    我有一个用 C 编写的程序 我使用 VSTS 2008 Net 3 5 Windows Vista Enterprise x86 来开发 Windows 窗体应用程序 我当前的计算机是双核CPU 我想将程序的CPU亲和力设置为在特定CPU上
  • Linq动态在哪里算?

    是否可以在 where 中使用列表 我想要这样的东西 public class Customer string FirtsName string LastName int Number 我想使用复选框来过滤客户 如果我选择名字和号码 那么将
  • (heroku) 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT

    我是一名初级 Discord 机器人开发人员 希望在 Heroku 上 24 7 托管他的 heroku 机器人 大约之后 部署 1 分钟后 出现错误 2020 12 28T11 40 54 000493 00 00 heroku web
  • Flutter Firebase 存储无法工作:没有默认存储桶

    我正在尝试上传一个pdf file to Firebase Storage使用此功能 static Future
  • Django ModelForms:将ManyToMany字段显示为单选

    在 Django 应用程序中 我有一个模型 Bet 其中包含与 Django 用户模型的 ManyToMany 关系 class Bet models Model participants models ManyToManyField Us
  • 触发AWS代码构建时指定文件路径

    我已经创建了 AWS codebuild 管道 每当我推送到主分支时它就会自动触发 现在 我只想在 Dockerfile 中发生更改时触发它 以下是我的项目结构 casestudy gt Docker gt Dockerfile gt In
  • “图标路径无效” - Apple App Store 团队返回错误

    这是我第一次向 App Store 提交内容 遇到了很多问题 首先 我要说的是 该应用程序是用PhoneGap 使用科尔多瓦1 9 0框架 它的 Web 应用程序端很好 验证了 W3 并且在浏览器中完美运行 在无法手动修复问题后 我从头开始
  • 如何在 PlayFramework 中的 Json Reads 中添加自定义 ValidationError

    我正在使用 play Reads 验证助手 我想在 json 异常的情况下显示一些自定义消息 例如 长度是最小值然后指定或给定的电子邮件无效 我知道 play 显示这样的错误消息error minLength但我想显示一条合理的消息 例如请
  • 在 Mayavi 中锁定相机

    我正在尝试使用 mayavi 中的一系列数据文件制作动画 不幸的是 我注意到相机没有锁定 它正在变焦和缩小 我认为发生这种情况是因为我的网格的 Z 分量正在变化 并且 Mayavi 正在尝试重新计算比例 How can I fix it i
  • 使用每个用户数据的单独密钥加密 SQL Server Azure 数据库中的数据

    我正在尝试创建基于 Azure SQL 数据库后端的服务 该服务将是多租户的 并将包含来自多个 客户端 可能有数十万 的高度敏感信息 这些信息必须彼此严格隔离并严格防止数据泄漏 按设计 使用如此多的单独数据库是不可行的 因为会有很多客户 但
  • 将背景颜色的下边缘设为另一种颜色

    我想要我的底部background color成为另一种颜色 我确信这涉及到linear gradient 但不确定如何实施 示例代码 background height 100px width 200px background color
  • 在python多处理中修改对象

    我有大量自定义对象 需要对其执行独立 可并行 任务 包括修改对象参数 我尝试过使用 Manager dict 和 sharedmem ory 但两者都不起作用 例如 import numpy as np import multiproces
  • 用 Celery 组合链、组和块

    我想使用 Celery 作为 URL 抓取器 我有一个 Url 列表 我必须对每个 URL 执行 HTTP 请求并将结果写入文件中 整个列表使用同一文件 我的第一个想法是让 Celery 调用的任务中的这段代码击败所有n分钟 app tas
  • AzureADB2C.UI - 登录后将用户重定向到页面

    我在 NET Core Web 应用程序上使用 AzureADB2C UI 但我不确定如何将用户重定向到自定义页面 ej Customers Index他登录后 这基本上就是我以前使用时的情况SessionController但由于我使用的
  • 如何强制用户在 GIT 中使用小写电子邮件地址

    我正在寻找确认提交者的电子邮件地址是否为小写的可能性 以避免出现以下问题this https serverfault com questions 12373 how do i edit gits history to correct an