gitblit 学习-hook功能

embedded/2024/10/30 17:18:46/

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.ppmy.cn/embedded/133658.html

相关文章

HTML入门教程4:HTML属性

HTML属性概述 HTML属性是附加在HTML标签上的额外信息&#xff0c;它们以键值对的形式出现&#xff0c;并放置在标签的起始部分内。这些属性为浏览器提供了额外的指令&#xff0c;以更准确地渲染网页内容。 基本语法 <tagname attribute1"value1" attribute2&qu…

Python BeautifulSoup 实战案例:抓取网页并提取数据

Python BeautifulSoup 实战案例&#xff1a;抓取网页并提取数据 在数据分析和机器学习领域中&#xff0c;数据是不可或缺的资源。网页数据作为丰富的信息来源&#xff0c;往往需要通过爬虫抓取。Python 的 BeautifulSoup 是处理 HTML 和 XML 的利器&#xff0c;它能够将复杂的…

大数据-189 Elasticsearch - ELK 日志分析实战 - 环境配置启动 Nginx、ZK、Kafka、ES、Kibana

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

MySQL安装配置教程

以下是 MySQL 在 Windows 系统下的安装配置教程: 1. 下载 MySQL 访问 MySQL 官方网站(https://dev.mysql.com/downloads/mysql/),根据您的操作系统版本(32 位或 64 位)选择合适的 MySQL 安装包。一般建议下载社区版(Community Server),它是免费且功能丰富的版本。2. …

Android启动流程_Init阶段

前言 本文将会介绍 Android 启动流程&#xff0c;将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …

【ArcGISPro】制作简单的ArcGISPro-AI助手

【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 【Python】AI Navigator对话流式输出_ai大模型流式输出效果(打字效果) python-CSDN博客 【C#】调用本机AI大模型流式返回_怎么实现调用本地大模型时实现流式输出-CSDN博客 【ArcGISPro】宣布推…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识&#xff0c;通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题&#xff0c;并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算&#xff0c;实例如下&#xff1a; 三、实验过程 1.运行非线性回归中…

没有对象来和我手撕红黑树吧

1. 红黑树的介绍 红黑树也是一种自平衡的二叉搜索树&#xff0c;在每一个节点增加了一个存储位来表示节点的颜色&#xff0c;可以是红色也可以是黑色&#xff0c;通过约束颜色来维持树的平衡&#xff0c;具有以下的性质&#xff1a; 每个节点不是红色就是黑色根节点为黑色如果…