windows - GIT 预提交钩子,它在修改/添加的文件中搜索非 UTF-8 编码(如果找到则拒绝提交)
问题描述
我正在使用适用于 Windows 的 Git(和 TortoiseGit)。
我的目标是防止在修改/添加中至少包含一个非 UTF-8 文件的提交。
枚举修改/添加的文件:我找到了以下代码
{ git diff --name-only ; git diff --name-only --staged ; }
这是最好的(正确和最简洁的)方法吗?
搜索非 UTF-8 文件:我找到了以下代码
{ git diff --name-only ; git diff --name-only --staged ; } | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {} - is non-UTF8!"
如果我在我的存储库根文件夹中启动 Git Bash - 它可以工作(显示每个非 UTF-8 文件)。所以我重命名
.git/hooks/pre-commit.sample
并.git/hooks/pre-commit
复制粘贴了上面的代码。提交更改后,TortoiseGit 提交 gui 窗口内没有任何特殊显示。所以看起来预提交挂钩无法正常工作。如果有任何非 UTF-8 文件则拒绝提交:在显示所有非 UTP-8 文件后,应拒绝提交。但我不知道如何做到这一点(显示一些退出代码 - 但如何?)。
所以任何帮助表示赞赏。
解决方案
推荐阅读
- ecmascript-6 - 与生成器混合的功能库
- java - 关于使用 Spring Boot 退回电子邮件的警报
- php - 如何在 Android 应用程序中解析动态 JSON?
- javascript - 为什么在 POST superglobal 上使用 'php://input' - Stripe SCA 示例
- java - 如何在 Javers 中清理一段时间后的快照和提交?
- angular - Onclick 下一个和上一个按钮我的组件内容应该随着路由器 ID 和标头 ID 而变化
- scikit-learn - 如何使用带有 doc2vec 输入的 Sklearn 线性回归
- javascript - 如何阻止内联 onclick 事件并稍后在自己的点击侦听器中调用它?
- javascript - 如何使用数字键访问嵌套对象?
- javascript - 提交后如何在表单中创建包含信息的元素?