gitblit 学习-hook功能

hook功能

hook是什么

git hooksgit提供的,在发生特定事件时,允许用户添加自定义代码(或操作)的方式。

就像Vue中组件的生命周期钩子,比如,你想在vue组件创建后输出一行log, 你可能会这么写

有什么用?

  • 规范commit提交:比如git commit -m "test: 修复bug2"时,很规范,但是团队中有人只写一个git commit -m "add",则不符合规范,此时就可以使用commit-msg钩子去限定下,提交信息必须符合某种格式,否则不允许提交
  • 你喜欢js代码缩进用两个空格,但是团队中有人总是两个空格和四个空格混用,十分的混乱,这时候就可以结合eslint,在提交前进行代码格式的校验

如何创建一个hook

hook脚本放在哪里

在/.git/hooks文件夹下面,git在初始化仓库的时候,很贴心的为你初始化了很多个xxx.sample文件(这些文件不会被执行),就是钩子的示例文件,比如pre-commit.sample就是git commit前的钩子示例文件。

创建一个pre-commit的hook

将pre-commit.sample复制一份去掉后缀

#!/bin/sh
#以下为shell语法
echo "Hello world"

效果如下:

hook可以使用什么语言

用于编写 git hooks 的脚本语言是没有限制的,可以用 nodejsshellpythonruby等脚本语言,非常的灵活方便

python脚本写hook示例

要点:python 脚本的位置放在hooks文件夹下,脚本名字不要后缀比如:“pre-commit”


import subprocess
print ("begin py:")
# 获得git commit 日志
user = subprocess.Popen("git config --global user.name", stdout=subprocess.PIPE, shell=True, stderr=subprocess.STDOUT)
email = subprocess.Popen("git config --global user.email", stdout=subprocess.PIPE, shell=True, stderr=subprocess.STDOUT)
user = user.communicate()[0]
email = email.communicate()[0]
print("current user: %s: %s" % (user, email))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460406.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Input的流程和原理

Android Input事件机制 Android系统是由事件驱动的,而Input是最常见的事件之一,用户的点击、滑动、长按等操作,都属于Input事件驱动,其中的核心就是InputReader和InputDispatcher。InputReader和InputDispatcher是跑在system_serv…

Jmeter基础篇(19)JSR223预处理器

前言 JSR223预处理器是Apache JMeter中的一个组件,它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大,因为它让测试人员能够利用如Groovy、JavaScript(Nashorn引擎)、BeanShell…

轻松实现金蝶与旺店通数据无缝对接的完整解决方案

【金蝶】采购入库单对接【旺店通】委外入库单_合并 在企业信息化系统中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将分享一个实际案例,展示如何通过轻易云数据集成平台实现金蝶云星空与旺店通企业奇门之间的数据无缝对接。具体方案为&am…

基于SpringBoot的汽车票网上预订系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

前端好用的网站分享——CSS(持续更新中)

1.CSS Scan 点击进入CSS Scan CSS盒子阴影大全 2.渐变背景 点击进入color.oulu 3.CSS简化压缩 点击进入toptal 4.CSS可视化 点击进入CSS可视化 这个强推,话不多说,看图! 5.Marko 点击进入Marko 有很多按钮样式 6.getwaves 点击进入getwaves 生…

【K8S系列】Kubernetes 中 Service IP 分配 问题及解决方案【已解决】

在 Kubernetes 中,LoadBalancer 类型的 Service 允许用户轻松地将应用暴露给外部流量。它自动创建一个云负载均衡器并分配一个外部 IP 地址。然而,在某些情况下,LoadBalancer 类型的 Service 可能未能成功分配 IP 地址,导致外部无…

Tomcat servlet response关于中文乱码的经验

前言 最近修改老项目项目,使用zuul网关返回的中文内容乱码了,如果使用GBK或者GB2312编码确正常显示,稍微实验了一下,发现里面很多细节,毕竟Springboot对我们做了很多事情,而且当我们使用不同的模式会出现很…

微服务之间调用,OpenFeign传递用户(RequestInterceptor接口)

场景:微服务之黑马商城项目-登录拦截器在网关完成用户的校验,并将用户信息(用户id)存入请求头,假设将购物车里面的商品进行结算就会生成订单并清空购物车,这里涉及到了交易服务模块远程调用购物车模块&…

Java中String的length与Oracle数据库中VARCHAR2实际存储长度不一致的问题

目录 一、根本原因 二、解决方案 一、根本原因 Oracle数据库新增数据的时候报如下错误: 先给大家看个小案例,这样更好去理解,下面是一段测试代码: 这里面我分别列举了三种字符串,中文,英文和数字以及两种…

探索 CrewAI:引领多智能体协作的未来

探索 CrewAI:引领多智能体协作的未来 在人工智能领域,如何让多个智能体协同工作以解决复杂问题一直是一个热门话题。CrewAI 作为一个前沿的框架,正是为了解决这一挑战而生。它通过角色扮演和自主智能体的协作,赋予了智能体无缝合…

ViSual studio如何安装 并使用GeographicLib

在C的 Boost.Geometry、GDAL/OGR 和 GeographicLib。这些库都可以用于计算两个经纬度点之间的地面距离。 . Boost.Geometry 描述:Boost库的一部分,提供了几何计算功能,包括计算两点之间的地面距离。 优势:轻量级、易于集成到C项…

网站攻击,XSS攻击的类型

XSS(跨站脚本)攻击是一种网络安全攻击方式,攻击者通过在网站页面中注入恶意脚本,使脚本在其他用户的浏览器中执行,从而窃取用户信息、篡改页面内容或操控用户账户。这类攻击通常利用网站对输入数据的过滤不严格&#x…

接口测试加密了怎么测试

各位小伙伴,大家好,今天给大家带来的是接口测试加密了我们该怎么测试。 首先我们来了解一下什么是接口,在我们生活中,水管接口,管道接口等等,在我们软件中通常说的是客户端和服务端之间数据传输的接口。我…

尽可能连续的基于挤压的表面模型制造

🦌🦌🦌宝子们好,今天我们来看一个关于外壳打印的路径优化问题。同样的,红色的是术语、橙色的是方法、绿色的是算法过程,这次多加了紫色,是文章的创新点或目标等。废话不多说,上论文 …

linux驱动—在自己的总线目录下创建属性文件

在总线目录下创建属性文件以扩展其功能。 通过创建属性文件, 我们可以为总线添加额外的信息和控制选项, 以便与设备和驱动进行交互。 简单就是,属性文件,可以完成用户空间和内核空间的数据交互, 比如在应用层快速修改g…

【Searxng】Searxng docker 安装

SearXNG将用户的查询请求分发至多个支持的搜索引擎,并收集返回的结果进行汇总处理。在这个过程中,它通过内置的过滤器功能屏蔽广告和其他不相关内容,确保搜索结果的纯净度。 一键部署 docker run \--name searxng \-p ????:8080 \-v ~/s…

gitlab不同账号间·仓库转移

背景:公司业务调整,原先在海外仓库的代码转移回国内 诉求:完整的保留项目记录 操作: 步骤一: 定位到需要迁移的原项目地址 步骤二:创建新项目 步骤三:打开命令行,创建好文件路径为需要clo…

Ubuntu 安装 npm

1. 升级apt sudo apt-get update 2. 安装nodejs sudo apt install nodejs 3. 安装npm sudo apt-get install npm 4. 查看版本 node -v npm -v 完成安装!

Pytorch学习--神经网络--线性层及其他层

一、正则化层 torch.nn.BatchNorm2d torch.nn.BatchNorm2d(num_features, eps1e-05, momentum0.1, affineTrue, track_running_statsTrue, deviceNone, dtypeNone)正则化的意义: 加速训练收敛:在每一层网络的输入上执行批量归一化可以保持数据的分布稳…

Zig 语言通用代码生成器:逻辑,冒烟测试版发布二

Zig 语言通用代码生成器:逻辑,冒烟测试版发布二 Zig 语言是一种新的系统编程语言,其生态位类同与 C,是前一段时间大热的 rust 语言的竞品。它某种意义上的确非常像 rust,尤其是在开发过程中无穷无尽抛错的过程&#x…