Git 预提交挂钩在文件中查找文本

2023-11-24

我正在编写一个 git 预提交挂钩来检查任何暂存文件是否包含不允许的文本,如果是这种情况则中止。

不是这方面的专家。到目前为止我已经得到了这个

git diff --cached --name-status | while read x file; do
        if [ "$x" == 'D' ]; then continue; fi
        if [[ egrep "DISALLOWED_TEXT" ${file}]]; then
                echo "ERROR: Disallowed text in file: ${file}"
                exit 1
        fi
done

似乎不起作用。我在提交时遇到这些错误:

.git/hooks/pre-commit: line 16: conditional binary operator expected
.git/hooks/pre-commit: line 16: syntax error near `"DISALLOWED_TEXT"'
.git/hooks/pre-commit: line 16: `        if [[ egrep "DISALLOWED_TEXT" ${file}]]; then'

任何建议、想法和帮助表示赞赏。 谢谢!

SOLVED:(语法错误和功能失调的退出调用)

disallowed="word1 word2"

git diff --cached --name-status | while read x file; do
        if [ "$x" == 'D' ]; then continue; fi
        for word in $disallowed
        do
            if egrep $word $file ; then
                echo "ERROR: Disallowed expression \"${word}\" in file: ${file}"
                exit 1
            fi
        done
done || exit $?

将此问题标记为有答案的答案:

OP最终得到:

disallowed="word1 word2"

git diff --cached --name-status | while read x file; do
        if [ "$x" == 'D' ]; then continue; fi
        for word in $disallowed
        do
            if egrep $word $file ; then
                echo "ERROR: Disallowed expression \"${word}\" in file: ${file}"
                exit 1
            fi
        done
done || exit $?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 预提交挂钩在文件中查找文本 的相关文章

  • 分支和文件夹的 gitolite 权限

    在 gitolite 我想要 developers能够推送到除以下之外的任何分支master I want user1能够推送到任何分支 包括master 除了不是某个目录master 我该怎么做呢 这应该解决以下两个问题 repo are
  • 尽管存在但未找到 Git https:// 存储库

    我在 github 上有一个私人仓库 它的位置被改变了 我尝试更换遥控器 但无法再按了 ls remote https github com xxxxx xxxxx git 给了我这个 远程 未找到存储库 致命 存储库 https gith
  • 有人可以解释一下以下内存分配 C 程序的性能行为吗?

    在我的机器上 时间 A 和时间 B 交换取决于是否A是 定义或未定义 这会改变两个的顺序 callocs 被称为 我最初将此归因于寻呼系统 奇怪的是 当mmap被用来代替calloc 情况更加奇怪 两个循环花费的时间相同 正如预期的那样 作
  • 在詹金斯管道作业中将变量传递给bash脚本

    我有一个 Jenkins 管道作业 其中我使用名为 setup sh 的 bash 脚本配置我的环境 如下所示 bin bash export ARCH 1 echo architecture ARCH 在 Jenkins 管道脚本中 我使
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • Python select() 行为很奇怪

    我在理解 select select 的行为时遇到一些困难 请考虑以下 Python 程序 def str to hex s def dig n if n gt 9 return chr 65 10 n else return chr 48
  • 在 $git push -u origin main 命令之后,Git bash 不请求任何身份验证,实际上什么也不做

    当我尝试将代码上传到 github 时 以下是我在 Git Bash 终端中执行的步骤 当我尝试使用将代码推送到 github 时 git push u origin main光标移动到下一行并持续闪烁 但不执行任何操作 git remot
  • shell脚本响应按键

    我有一个 shell 脚本 本质上是这样的 while true do read r input if input a then echo hello world fi done 这一切都很好 但我刚刚意识到在这种情况下必须按 ENTER
  • 从 svn 到 git,移动了主干

    我正在尝试将 svn 存储库切换到 git 这是一个旧的存储库 以前的维护者之一为每个新版本移动了主干 例如 以前的存储库位于 svn ssh svn mycompany com project release 1 trunk 现在 我们当
  • 如何在 shell 中解码 URL 编码的字符串?

    我有一个文件 其中包含已编码的用户代理列表 例如 Mozilla 2F5 0 20 28Macintosh 3B 20U 3B 20Intel 20Mac 20OS 20X 2010 6 3B 20en 我想要一个 shell 脚本 它可以
  • 从子文件夹自动部署 Heroku

    我知道你可以从github自动部署到heroku 但我还没有找到一种方法只将子文件夹从github推送到heroku 从命令行我知道可以通过以下方式执行此操作 git subtree push prefix
  • 如何防止自动工具自动重新生成配置脚本?

    有时由于SCM没有严格记住文件的时间戳 生成的Makefile会认为需要重新运行 autoreconf i 或相当于从Makefile am重新生成Makefile in 从configure ac重新生成配置等 我该如何防止这种情况 我想
  • 如何在cygwin下更改git中文件的大小写?

    我们在区分大小写 不敏感的混合环境 cywgin linux 中工作 今天有人通过重命名文件 将 S 更改为 s 对我们的工作流程造成了小破坏 这导致了各种有趣的跨分支合并问题 而且说实话 没有人完全确定发生了什么 在 cygwin 的 g
  • Shell脚本通过curl调用API并处理响应

    我需要创建一个通过curl 调用我的登录API 的shell 脚本 该脚本应该能够存储和处理来自curl api 调用的响应 myscript sh bin bash echo Extract bearer token from curl
  • 错误:选项“Z”仅在夜间编译器上被接受[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在通过斯坦福操作系统课程 cs140e https web stanford edu class cs140e 其中一个问题是 有一个名
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 运行 npm install - 如何配置不使用 SSH(端口被防火墙阻止)

    当我跑步时npm install大多数模块配置正确 然而 至少有人想击中ssh 拉取模块的地址 不幸的是 我的公司有一项政策 不允许内部网络之外的 SSH 连接 我收到的具体错误是 Error while executing npm ERR
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • flex 属性在 IE 中不起作用

    我一直无法确定为什么 Flexbox 在 IE 11 中不起作用 为了进行测试 我从 CodePen 获取了一个非常简单的 Flexbox 布局 并粘贴了以下信息 Chrome 按预期工作 IE11 失败 在 Chrome 上运行的布局成功
  • EF Code First 创建非聚集主键索引

    我正在使用 EF 4 1 CodeFirst 创建数据库 看来 EF 正在使用聚集索引创建所有主键 这在一种情况下 可能是更多情况 对我们来说并不是最佳选择 有没有办法告诉 EF 生成这个主键作为非聚集索引的表 当然 我们可以在创建数据库后
  • 如何在 MS Code 合约中查找“屏蔽”断言

    我的 CodeContracts 错误列表中有以下消息级条目 CodeContracts 检查了 410 个断言 404 个正确 6 个被屏蔽 我不明白 什么是掩盖断言 如何找到它提到的 6 我是否应该关心他们 抱歉没有发布代码 我不知道如
  • 分隔字符串中的十六进制转义序列

    字符串常量可以吗 foo x01 bar 写成单个字符串文字 同时保留十六进制表示法 和 foo x01bar 转义序列似乎被解释为 x01ba因为我收到警告 十六进制转义序列超出范围 foo x01 bar is字符串文字 C 标准规定
  • 如何在asp.net中动态生成无序列表?

    我想生成一个无序列表 其中包含用于在数据库中显示图像的标签 我查看了项目符号列表 但它不适用于图像 我如何从数据库中的结果动态生成它 例如 如果我在数据库中有 6 个图像 那么我希望生成的列表必须如下所示 ul li img src Res
  • 根据Python中的一组索引将列表拆分为子列表

    我有一个类似于下面的列表 a b c d e f g h i j 我想用索引列表分隔 1 4 在这种情况下 它将是 a b c d e f g h i j As 1 a 1 4 b c 4 d e f g h i j 情况2 如果索引列表是
  • 如何使用 Vuelidate 验证密码?

    问候 我需要验证密码表格 除了必填字段外 必须至少有 1 个大写字母 至少 1 个小写字母 至少 1 个数字且至少包含以下字符之一 我正在使用这个包https vuelidate js org EDIT 或正则表达式 只需添加一个自定义函数
  • 使用 python 计算卷上剩余的跨平台空间

    我需要一种方法来在 Linux Windows 和 OS X 上使用 python 来确定磁盘卷上的剩余空间 我目前正在解析各种系统调用 df dir 的输出来完成此操作 有更好的方法吗 import ctypes import os im
  • 如何从浏览器控制台访问和测试 AngularJS 过滤器?

    给定一个测试过滤器 这样说 大写 过滤器将每个单词的第一个字母大写 return function input return input input replace W s g function txt return txt charAt
  • Visual Studio 构建失败:无法将 exe 文件从 obj\debug 复制到 bin\debug

    Update 可以找到重现此错误的示例项目在 Microsoft Connect 上 我还测试并验证了中给出的解决方案下面接受的答案致力于该示例项目 如果此解决方案不适合您 则您可能遇到了不同的问题 属于单独的问题 这是之前在 Stack
  • 打印时如何避免最后出现多余的空白页?

    我正在使用 CSS 属性 如果我使用page break after always 它之前会打印一个额外的空白页 如果我使用page break before always 之后会打印一个额外的空白页 我怎样才能避免这种情况
  • 使用 java 将电子邮件转换为其原始格式

    到目前为止我一直尝试创建一个类型的对象MimeMessage使用JavaMail api 然后获取其原始表示 但没有成功 我唯一能获得的是原始表示content电子邮件的内容 但不包括标题 主题或收件人 我对任何建议 任何 java 库感兴
  • 如何扩展代码点火器控制器类?

    在我的 CI system libraries 目录中 我有一个名为 DD Controller php 的新类 该文件如下所示
  • Python 中的“@”是什么意思?

    什么是 在 Python 中是什么意思 例子 login required etc 这是装饰器语法 函数定义可以由一个或多个装饰器表达式包装 定义函数时 在包含函数定义的范围内评估装饰器表达式 结果必须是可调用的 它是用函数对象作为唯一参数
  • 给定一个函数记录,以及该函数所作用的类型的数据记录,如何通用地应用该函数记录?

    标题稍微不准确 因为我的特定情况涉及更多 而不是第一个记录中的函数直接作用于第二个记录中的值 而是作用于值的列表 或其他可遍历的 我们可以假设 对特定字段的应用程序的结果返回的值与该字段中的类型相同 如果这能给我们带来什么好处的话 一个例子
  • 在启动画面期间加载所有场景

    我的移动 2D Unity 游戏中有多个场景 我想在启动屏幕中加载所有场景 以便场景传递流畅 我怎样才能做到这一点 如果我这样做 我是否需要更改 Application LoadScene 方法 我可以使用什么方法 我是否需要更改 Appl
  • TDM-GCC w64 脚本将 Windres 更改为 32 位?

    尝试让 TDM GCC 4 7 1 在 XP SP3 上运行 我现在只需要一个 c 32 位版本 看来 Windres 的格式不正确 我的 rc 文件构建失败 x86 64 w64 mingw32 g exe Wall m32 s D M
  • 在 WPF 文本框中使用箭头键 (C#)

    有没有办法捕获 WPF TextBox 中的向上 向下箭头键 System Windows Controls Textbox 并允许他们更改文本 我读过有关覆盖ProcessCmdKeyWindows 窗体文本框的方法 System Win
  • 使用 Django South 重置迁移历史记录的推荐方法是什么?

    我已经使用 South 0 7 和 Django 1 1 2 积累了相当多的迁移 这些迁移开始在我的单元测试中消耗相当多的时间 我想重置基线并开始一组新的迁移 我已经审查了南方文档 完成了通常的 Google Stackoverflow 搜
  • Git 预提交挂钩在文件中查找文本

    我正在编写一个 git 预提交挂钩来检查任何暂存文件是否包含不允许的文本 如果是这种情况则中止 不是这方面的专家 到目前为止我已经得到了这个 git diff cached name status while read x file do