当前位置: 首页 > news >正文

Git的Hooks机制

参考文章:详解如何在项目中使用git Hooks(husky、yorkie)

git hooks钩子

git hooks是一些自定义的脚本,用于控制git工作的流程,分为客户端钩子和服务端钩子。

 ~/work/step-time/ [master+*] ll .git/hooks 
total 128
-rwxr-xr-x  1 admin  staff   478B  8 19 18:52 applypatch-msg.sample
-rwxr-xr-x  1 admin  staff   896B  8 19 18:52 commit-msg.sample
-rwxr-xr-x  1 admin  staff   4.5K  8 19 18:52 fsmonitor-watchman.sample
-rwxr-xr-x  1 admin  staff   189B  8 19 18:52 post-update.sample
-rwxr-xr-x  1 admin  staff   424B  8 19 18:52 pre-applypatch.sample
-rwxr-xr-x  1 admin  staff   1.6K 11 12 17:42 pre-commit
-rwxr-xr-x  1 admin  staff   1.6K 11 12 17:00 pre-commit.sample.bck
-rwxr-xr-x  1 admin  staff   416B  8 19 18:52 pre-merge-commit.sample
-rwxr-xr-x  1 admin  staff   1.3K  8 19 18:52 pre-push.sample
-rwxr-xr-x  1 admin  staff   4.8K  8 19 18:52 pre-rebase.sample
-rwxr-xr-x  1 admin  staff   544B  8 19 18:52 pre-receive.sample
-rwxr-xr-x  1 admin  staff   1.5K  8 19 18:52 prepare-commit-msg.sample
-rwxr-xr-x  1 admin  staff   2.7K  8 19 18:52 push-to-checkout.sample
-rwxr-xr-x  1 admin  staff   3.6K  8 19 18:52 update.sample
 ~/work/step-time/ [master+*] 
 ~/work/step-time/ [master+*] 
 ~/work/step-time/ [master+*] 

.git.hooks目录下的就是勾子,想要运行她们只需要去除.sample后缀,并且把文件改成可执行的就可以了。

pre-commit.sample介绍

#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".# 获取提交的文件名
if git rev-parse --verify HEAD >/dev/null 2>&1
thenagainst=HEAD
else# Initial commit: diff against an empty tree objectagainst=$(git hash-object -t tree /dev/null)
fi# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --type=bool hooks.allownonascii)# Redirect output to stderr.
exec 1>&2# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&# Note that the use of brackets around a tr range is ok here, (it's# even required, for portability to Solaris 10's /usr/bin/tr), since# the square bracket bytes happen to fall in the designated range.## 获取改动的文件名,使用tr删除ascii表的0到126的字符,## 也就是计算non-ASCII 的字符数量test $(git diff --cached --name-only --diff-filter=A -z $against |LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
thencat <<\EOF
Error: Attempt to add a non-ASCII file name.This can cause problems if you want to work with people on other platforms.To be portable it is advisable to rename the file.If you know what you are doing you can disable this check using:git config hooks.allownonascii true
EOFexit 1
fi# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --

相关文章:

Git的Hooks机制

参考文章&#xff1a;详解如何在项目中使用git Hooks&#xff08;husky、yorkie&#xff09; git hooks钩子 git hooks是一些自定义的脚本&#xff0c;用于控制git工作的流程&#xff0c;分为客户端钩子和服务端钩子。  ~/work/step-time/ [master*] ll .git/hooks total…...

代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II

第九章 动态规划part10 121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最…...

Rust教程6:并发编程和线程通信

文章目录 线程初步join方法线程通信 Rust系列&#xff1a;初步⚙所有权⚙结构体和枚举类⚙函数进阶⚙泛型和特征 线程初步 在Rust中&#xff0c;开启多线程进行并发编程&#xff0c;只需调用thread::spawn&#xff0c;但这里有一个坑点&#xff0c;即spawn函数只有一个传入参…...

JVM在线分析-监控工具(jps, jstat, jstatd)

参考官方文档&#xff08;jdk11&#xff09; https://docs.oracle.com/en/java/javase/11/tools/troubleshooting-tools-and-commands.html#GUID-CB44BFBA-E5F9-4D80-8EE8-28E9F16BC451 1. 监控工具(jps, jstat, jstatd) jps -q Suppresses the output of the class name, J…...

Console LDAP 配置解密

之前通过短视频向大家介绍了 Console 如何集成 LDAP&#xff0c;但很多小伙伴反映按照视频里的配置后不成功。今天就结合小伙伴们反映的问题来跟大家详细介绍一下。 Console LDAP 完整的配置参数如下&#xff1a; 名称类型说明hoststringLDAP 服务器地址portintLDAP 服务器端口…...

node插件MongoDB(三)—— 库mongoose 的使用和数据类型(一)

前言 提示&#xff1a;使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档&#xff1a;http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码&#xff08;连接mongodb 服务&#xff09;3.…...

基础(二)

基础&#xff08;二&#xff09; 字符串型 C风格&#xff1a;char 变量名[] “字符串值”&#xff1b; C风格&#xff1a;string 变量名 “字符串值” #include <iostream> using namespace std; #include <string>int main() {// C风格char str1[] "h…...

思维模型 目标效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。明确目标&#xff0c;激发内在动机。 1 目标效应的应用 1.1 目标效应在教育领域的应用-棉花糖实验 美国斯坦福大学心理学系的教授米歇尔&#xff08;Walter Mischel&#xff09;曾经进行了…...

【从0到1设计一个网关】性能优化---Netty线程数配置与JVM参数配置

文章目录 Netty线程介绍Netty实战配置JVM参数与ZGCJVM与ZGC调优Netty线程介绍 在Netty中有两个比较重要的线程概念,一个是BOSS线程,一个是Woker线程。 Boss线程组: Boss线程组通常负责处理接受客户端连接的工作,即处理ServerSocketChannel的连接事件。 Boss线程会监听并接…...

node插件MongoDB(五)—— 库mongoose 的模块化(五)

文章目录 一、使用mongoose 模块化的原因二、准备工作2. 启动mongo.exe 和mongod.exe 两个程序连接数据库 三、基本模块的拆分1、基本逻辑2、代码3、代码图示说明 四、在index.js 中进一步的拆分1.拆分原因2.新建model文件夹存储文档的结构对象3.代码4.代码实际演示和注意点 一…...

Windows server 2008 R2 IIS搭建ASP网站教程

一、安装应用程序服务器 提示安装成功 二、添加角色服务asp 三、asp网站配置 放入源码 设置网站首页为index.asp: 设置应用程序池 四、设置网站目录属性 五、access数据库连接配置 Cd c:\Windows\System32\inetsrv appcmd list apppool /xml | appcmd set apppool /…...

Linux之基础开发工具gdb调试器的使用(三)

文章目录 一、Linux调试器-gdb使用1、安装gdb2、背景3、Debug和release4、区分Debug和release 二、Linux调试器-gdb命令演示1、显示指定行之后的代码&#xff08;自动记录最后一条指令&#xff09;2、断点1、打印断点2、查看断点3、删除断点4、使能&#xff08;禁用/开启&#…...

advanced-css: No.1

本套教程学习来自视频&#xff1a;https://www.bilibili.com/video/BV1n94y1o7yS/?p7&spm_id_frompageDriver&vd_sourceb79be8283df9418cb45941cc0bd583c6 案例 实现效果图 代码 HTML: <!DOCTYPE html> <html lang"en"><head><meta c…...

最新宝塔面板第三方云端站点程序源码/第三方宝塔面板PHP源码/全开源ThinkPHP框架

源码简介&#xff1a; 实现宝塔面板第三方云端站点程序源码,这个是第三方宝塔面板 btcloud PHP源码&#xff0c;它还有云端使用记录、IP黑白名单、定时任务等功能。 这是一个使用PHP开发的宝塔面板第三方云端站点程序。 您可以利用此程序搭建属于自己的宝塔面板第三方云端&a…...

【Unity之UI编程】玩法面板的实现

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…...

栈和队列:栈

栈的概念&#xff1a; 栈&#xff1a; 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。…...

由浅入深学习统计学 - 常用统计图形学习

学习笔记 第一章- 信息图形化 图形化&#xff08;可视化&#xff09; 在一堆数据中&#xff0c;自己发现了这些数据的规律&#xff0c;但是无法表述给其他人知道&#xff0c;图形化就是便于他人理解数据的规律的展示的手段。 或者说我们也可以从统计的数据图形中发现某些没有…...

【java进阶】集合的三种遍历(迭代器、增强for、Lambda)

目录 一、先谈集合&#xff1a; 二、单列集合的三种遍历方式 迭代器遍历 增强for遍历 Lambda表达式遍历 一、先谈集合&#xff1a; &#x1f525;那我们平常用for循环依赖下标遍历不行嘛&#xff0c;这就与集合的分类有关了。 集合的体系结构&#xff1a; collection是单…...

Qt实现动态桌面小精灵(含源码)

目录 一、设计思路 二、部分源码演示 三、源码地址 🌈write in front🌈 🧸大家好,我是三雷科技.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由三雷科技原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:三雷科技🧸—CSDN博客 🎁欢…...

Qt 自定义分页控件

目录 前言1、功能描述2、代码实现2.1 ui文件2.1 头文件2.2 源码文件2.3 设计思路 4、示例5、总结 前言 在应用程序开发时经常会遇到数据分页的需求&#xff0c;每一页展示特定数量的数据&#xff0c;通过点击按钮翻页或者输入页码跳转到指定页。 本文介绍一个自定义分页控件&a…...

遥感目标检测数据预处理避坑:AIR-SARShip-1.0数据集裁剪中的重叠率、零像素与标注同步难题

遥感目标检测数据预处理实战&#xff1a;AIR-SARShip-1.0数据集裁剪的三大核心挑战与解决方案 处理大尺寸遥感图像数据集时&#xff0c;数据预处理环节往往成为项目成败的关键分水岭。以AIR-SARShip-1.0这类典型SAR舰船检测数据集为例&#xff0c;30003000像素的原始图像尺寸直…...

WebStorm高效开发Vue3+TypeScript项目:配置与实战技巧

1. WebStorm与Vue3TypeScript开发环境搭建 WebStorm作为JetBrains旗下的前端开发利器&#xff0c;对Vue3和TypeScript的支持堪称完美。最新版本甚至内置了Volar语言服务&#xff0c;让类型推断和代码补全更加精准。先说说我的踩坑经历&#xff1a;第一次用WebStorm创建Vue3项目…...

互动小游戏一般多少天能上线?附详细流程 + 案例 + 避坑

本文由长沙圣捷信息技术有限公司&#xff08;简称&#xff1a;圣捷游戏&#xff09;整理&#xff0c;以下统称圣捷游戏。&#x1f525; 用户核心疑问&#xff1a;互动小游戏多久上线&#xff1f;费用与流程怎么定&#xff1f;当下互动小游戏成品牌引流、活动运营、私域增长的标…...

FIFA 23 Live Editor 终极指南:如何安全地自定义你的足球游戏体验

FIFA 23 Live Editor 终极指南&#xff1a;如何安全地自定义你的足球游戏体验 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 你是否曾幻想过让梅西永远保持巅峰状态&#xff0c;让哈兰德…...

从调参实战看差异:Lattice Planner和EM Planner在Apollo中的参数配置与场景适配心得

从调参实战看差异&#xff1a;Lattice Planner和EM Planner在Apollo中的参数配置与场景适配心得 在自动驾驶系统的开发中&#xff0c;规划算法是决定车辆行为的关键模块。百度Apollo平台提供了Lattice Planner和EM Planner两种主流规划器&#xff0c;它们在算法原理和适用场景上…...

LeetCode刷题实战:从Hot100到代码随想录的进阶之路

LeetCode刷题实战&#xff1a;从Hot100到代码随想录的进阶之路 在技术面试的战场上&#xff0c;算法题就像是一道道必须攻克的堡垒。无论是硅谷的科技巨头还是国内的互联网大厂&#xff0c;算法能力始终是衡量工程师基本功的重要标尺。对于准备秋招或技术面试的开发者来说&…...

开源工具探索——OpenDroneMap:从无人机影像到三维地理信息的自动化构建

1. 为什么你需要了解OpenDroneMap&#xff1f; 如果你手头有一台消费级无人机&#xff0c;或者正在从事地理信息相关工作&#xff0c;那么OpenDroneMap&#xff08;简称ODM&#xff09;绝对值得你花时间研究。这个开源工具能把杂乱无章的航拍照片&#xff0c;自动转换成专业级的…...

保姆级教程:手把手教你用PyTorch复现ICASSP 2023的EMA注意力模块(附完整代码)

从零实现ICASSP 2023多尺度注意力&#xff1a;EMA模块的工程实践指南 在计算机视觉领域&#xff0c;注意力机制已经成为提升模型性能的关键组件。ICASSP 2023提出的EMA&#xff08;Efficient Multi-Scale Attention&#xff09;模块通过创新的跨空间学习方式&#xff0c;在保持…...

从零搭建高安全低代码表单系统,手把手实现JWT动态权限校验+防CSRF提交+审计日志闭环,7天交付标准SaaS组件

第一章&#xff1a;从零构建高安全低代码表单系统概览 高安全低代码表单系统并非传统表单引擎的简单封装&#xff0c;而是融合身份鉴权、字段级加密、动态权限策略与不可篡改审计能力的一体化平台。其核心目标是在显著降低前端开发门槛的同时&#xff0c;满足金融、政务等强监管…...

从原理到实战:在虚拟环境中重现永恒之蓝对Win7的攻防

1. 永恒之蓝漏洞的前世今生 2017年那场席卷全球的网络风暴&#xff0c;至今仍让很多IT从业者心有余悸。当时一个名为"永恒之蓝"的漏洞利用工具被公开&#xff0c;随即引发了WannaCry勒索病毒的全球大爆发。医院系统瘫痪、企业数据被锁、政府机构停摆...这些场景都源于…...