专栏首页进击的Coder怎样防止同事用 QQ 邮箱提交公司代码?

怎样防止同事用 QQ 邮箱提交公司代码?

这是「进击的Coder」的第 453 篇技术分享

作者:崔庆才

事情是这样的,最近组里新建了一个代码仓库来开发一个新的产品,再加上今天北京下大雨很多同事选择在家工作(包括我也是),于是我就选择用自己的个人电脑来工作。

但我的个人电脑里面的 Git 信息是用的我自己的个人邮箱:

git config --global user.name "Germey"
git config --global user.email "cqc@cuiqingcai.com" 

这两行命令大家用过 Git 的肯定都敲过对吧?

这个配置是全局生效的,所以如果我用 Git 的 commit 命令来提交代码的话,那么 commit 的名字和邮箱就会变成刚才我配置的个人信息。

然后如果把代码推送到公司的代码仓库里面,里面就会出现一个奇奇怪怪的用户名和头像,就像这样子:

图中上面两次 commit 就是我用个人电脑提交的,最后的那次 commit 是我上周在公司用公司电脑提交的。

这是不是很奇怪?

如果其他人也用的个人邮箱提交,那公司代码库里面就会出现各种怪怪的提交人的记录,无从知晓。

这肯定不能忍啊,以后要是有谁写了奇怪的代码都不好查是谁写的。

于是乎,我灵机一动,想:为何不在提交代码的时候做一个限制呢?

能做到吗?当然可以!

Git Hook

这里就介绍一个知识点 - Git Hook,它的意思就是在 Git 各种事件执行前和执行后执行一些自定义的逻辑,比如说,我们定义一个 pre-commit 的 Git Hook,那就能在 commit 之前执行一些操作,我们定义一个 post-push 的 Git Hook,那就能在 push 操作之后执行一些操作。

有关具体的内容可以参考官方文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

好,那这里我其实就是需要在 commit 之前做一下 Git 信息检查就好了,比如检查配置的邮箱不是工作邮箱,那就不允许执行 commit,所以就不会出现奇奇怪怪的 commit 记录了。

实操

说干就干。

配置 Git Hook 的工具有很多,Git 有原生支持,当然我们也可以用第三方库来做。

目前我们的代码仓库是基于 Node.js 开发的,所以 Node.js 的项目配置 Git Hook 比较流行的解决方案就是 husky,所以这里我也用 husky 来做了。

首先安装下 husky:

yarn add husky

然后配置一个 Node.js 的 prepare 命令,这个命令可以在装完包 Node.js 包之后自动执行,所以 prepare 命令就配置成 husky 初始化的脚本,package.json 里面增加如下配置:

{
  "scripts": {
    ...
    "prepare": "npx husky install"
  },
}

OK,这样的话,其他人如果 clone 了这个仓库,装完所有 Node.js 包之后就会自动初始化 husky 的配置,然后在项目本地生成一个 .husky 的初始化目录,这样 Git Hook 就生效了。

Git Hook 生效之后,所有定义在 .husky 目录下的 Hook 脚本都会被应用,比如如果在 .husky 目录下添加一个 pre-commit 的脚本,那执行 commit 的之前,该脚本就会被预先执行做一些检查工作。

所以 .husky 目录下我就创建了一个 pre-commit 的脚本,写入了如下内容:

EMAIL=$(git config user.email)
if [[ ! $EMAIL =~ ^[.[:alnum:]]+@microsoft\.com$ ]];
then
  echo "Your git information is not valid";
  echo "Please run:"
  echo '   git config --local user.name "<Your name in Microsoft>"'
  echo '   git config --local user.email "<Your alias>@microsoft.com"'
  exit 1;
fi;

这是一个 Linux Shell 脚本,完全遵循 Shell 语法。

这里其实就是获取了 git config user.email 的返回结果,然后用正则表达式匹配是否符合公司邮箱格式,比如我们公司邮箱后缀当然是 microsoft.com 后缀,所以这里就用了 ^[.[:alnum:]]+@microsoft\.com$ 来进行匹配了。这里值得注意的是,为什么这里没有用 \S 来代表非空白字符,而是用了一个 [:alnum] 呢?这是因为 Bash Shell 本身不支持 \S 这种匹配,所以这里得换成 [:alnum]

然后如果不匹配怎么办呢?

那就输出一些错误提示就好了,比如这里就提示请使用 git config —-local 命令来配置用户名和邮箱,之所以用-—local 是因为不想该配置影响全局的 Git 配置,所以这个配置只针对该仓库生效,然后 exit 1 就触发异常退出,程序运行终止,从而也不会触发 commit 命令了。

有了这个配置,我们来尝试下效果。

这会我没有做任何修改,Git 还是原来的配置,即我的全局个人邮箱配置。

这时候我执行下 commit 命令,就出现错误提示了:

Your git information is not valid
Please run:
   git config --local user.name "<Your name in Microsoft>"
   git config --local user.email "<alias>@microsoft.com"

很棒!检测出来了。

按照这个提示说的,然后我运行下配置命令:

git config --global user.name "Qingcai Cui"
git config --global user.email "xxxx@microsoft.com" 

这里呢,我就配置了我的公司个人信息和公司邮箱。

然后重新再执行 commit 命令,就不会再出现如上的错误提示了!commit 成功!

大功告成!!!

有了它,我们就可以成功阻止一些奇奇怪怪的 commit 乱入公司的代码仓库了!

然后我把这个 PR 发出去了,有同事似乎也是深有感触,说道:

哈哈哈,有了这个,以后我们应该再也不会看到我们的代码仓库里面有 QQ 邮箱啦!

希望对大家有帮助~

End

本文分享自微信公众号 - 进击的Coder(FightingCoder),作者:崔庆才

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 色情直播类黑色产业链背后黑幕分析

    导读:2019年9月16日,网络安全宣传周在天津开幕,本次宣传周以”网络安全为人民,网络安全靠人民”为主题。当前,我国网络空间安全问题异常严峻,个人隐私保护,网...

    我被狗咬了
  • 色情直播类黑色产业链背后黑幕分析

    导读:2019年9月16日,网络安全宣传周在天津开幕,本次宣传周以”网络安全为人民,网络安全靠人民”为主题。当前,我国网络空间安全问题异常严峻,个人隐私保护,网...

    小林C语言
  • 色情直播类黑色产业链背后黑幕分析

    随着近年来移动互联网的发展,产生了一大批内容平台,但因内容不合规,屡屡传出被下架、被关停的消息,由此可见,网络内容安全问题不容忽视,特别是以非法内容形成的黑色产...

    Bug开发工程师
  • 色情直播类黑色产业链背后黑幕分析

    导读:2019年9月16日,网络安全宣传周在天津开幕,本次宣传周以”网络安全为人民,网络安全靠人民”为主题。当前,我国网络空间安全问题异常严峻,个人隐私保护,网...

    小小詹同学
  • 色情直播类黑色产业链背后黑幕及技术分析

    随着近年来移动互联网的发展,产生了一大批内容平台,但因内容不合规,屡屡传出被下架、被关停的消息,由此可见,网络内容安全问题不容忽视,特别是以非法内容形成的黑色产...

    田维常
  • 腾讯云企业邮箱优惠-腾讯云最新优惠

    腾讯云企业邮箱(EXMAIL)是腾讯基于多年海量用户邮件系统研发和运营经验,为企业量身订造的一套办公用邮箱系统。稳定、简洁和快速,整合了丰富的企业应用,涵盖资源...

    用户5893074
  • 左右互博:站在攻击者的角度来做防护

    0x01、前言 习惯性的讲点废话,笔者是一名菜鸟安全工程师。有幸参与过两次安全方面的比赛,有些个人的体会,所以就有了这篇文章了。(自知技术还很菜,望各位大牛不喜...

    FB客服
  • 网站安全公司 如何对个人隐私进行保护

    伴随着顾客个人隐私保护观念的慢慢提高,有关政策法规的聚集颁布,个人隐私保护的总体发展趋势愈来愈严。换一个角度观察,在这般严苛的维护下获得的私人信息数据信息,具备...

    技术分享达人
  • 网站安全公司对个人隐私保护措施

    伴随着顾客个人隐私保护观念的慢慢提高,有关政策法规的聚集颁布,个人隐私保护的总体发展趋势愈来愈严。换一个角度观察,在这般严苛的维护下获得的私人信息数据信息,具备...

    网站安全专家
  • 实战渗透 | 情侣空间钓鱼邀请,撸它

    此程序是一份仅提供Web编程模仿技术研究,社会工程师水平锻炼,网络防骗流程深入研究的一份程序,并且程序性质不为公开性。

    HACK学习
  • 顶级黑客欢乐解析:宝宝事件中人肉搜索的七种方法

    作者:史中 链接:https://www.zhihu.com/question/20611116/answer/394977485 来源:知乎 著作权归作...

    wuweixiang
  • 《经验之谈》—— 如何保护个人信息安全?

    2018年上半年中国移动互联网关键字中,“安全”处于第一位!除了我们的人身安全,网络安全也是重中之重。

    课代表
  • Jenkins使用介绍

    小编百度到的链接:https://www.cnblogs.com/MarlonGuo/p/9935176.html

    清菡
  • 来电改号? | 无处安放几乎裸奔的隐私

    那徐玉玉电信诈骗案,你可还记得? 刚刚接到录取通知书,还没有进入的美好的大学象牙塔 就被骗走了学费 在最美好的年华里选择结束自己的生命 这个世界上,究竟...

    用户1631416
  • 知道电话号码,如何轻松获取电子邮箱

    知名安全公司赛门铁克(Symantec)发出警告,有一个精装骗局能够获取用户电子邮箱,其中包括了Gmail、Outlook(微软自带管理邮件软件)及Yahoo。...

    FB客服
  • WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

    还是几个月前,中国博客联盟的晓风依然博主 QQ 联系我,说发现 WordPress 评论回复邮件存在一个巨大的风险:WordPress 评论回复邮件,不管是使用...

    张戈
  • 警惕盗取QQskey利用其发生盗号行为

    内容都是一些网站啊,美名曰什么突破百度云限速,不限速百度网盘等等,结果都没什么用,你下载了打开就会拿到你的QQskey

    沈唁
  • 浅谈信息收集的思路

    Christopher Hadnagy 社会工程-安全体系中的人性漏洞 社会工程 卷2:解读肢体语言 社会工程 防范钓鱼欺诈 卷3 信息安全技术管理 杰出全专家...

    C4rpeDime
  • 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量

    邮件发送,对于职场人士来说,毫不陌生,但对于特定场景下,需要按不同人发送不同内容,并附带不同的附件时,机械性地重复着同样的电脑操作指令瞬间让人感到自己手上所做的...

    Excel催化剂

扫码关注云+社区

领取腾讯云代金券