在.net项目中添加Husky.Net提交验证
参考:C# 项目添加 husky - jesn - 博客园 (cnblogs.com)
官方文档:Getting Started | Husky.Net (alirezanet.github.io)
什么是Husky.net?
Husky是一款git hook(钩子)工具,让我们在git commit之前可以做一些操作,例如,代码格式化,重生生成,提交规范检查等,而Husky.net便是适用于.net平台的Husky,同时可以通过C#编写检查脚本
1.安装Husky.net
1.1当前项目安装 (推荐使用这种方式)
cd <Your project root directory>
dotnet new tool-manifest
dotnet tool install Husky
1.2全局安装
Dotnet tool install –global Husky
2.在项目中添加Husky.net
2.1进入项目根目录

2.2打开cmd

2.3cmd依次输入
dotnet new tool-manifest
dotnet tool install Husky

2.4然后输入
dotnet husky install

项目中即会添加husky文件

3添加一个hook
3.1依次输入
dotnet husky add pre-commit -c “echo ‘Husky.Net is awesome!’“
git add .husky/pre-commit”

3.2测试hook
Git提交一次

输出Husky.Net is awesome!表示刚才的hook添加成功
4添加commit-lint git提交检查
4.1添加commit-lint.csx检查脚本

内容如下

using System.Text.RegularExpressions;
private var pattern = @"^(?=.{1,90}$)(?:build|feat|ci|chore|docs|fix|perf|refactor|revert|style|test)(?:\(.+\))*(?::).{4,}(?:#\d+)*(?<![\.\s])$";
private var msg = File.ReadAllLines(Args[0])[0];
if (Regex.IsMatch(msg, pattern))
return 0;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Invalid commit message");
Console.ResetColor();
Console.WriteLine("e.g: 'feat(scope): subject' or 'fix: subject'");
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("more info: https://www.conventionalcommits.org/en/v1.0.0/");
return 1;
4.2添加commit-msg文件,目录为.husky/commit-msg

将其中的内容修改为

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
dotnet husky run --name "commit-message-linter" --args "$1"
echo
echo Great work!
echo
4.3在.husky/task-runner.json中添加一个task


4.4把创建的commit-msg添加进hook
Git add .husky/commit-msg

5.git commit测试

“keeyp calm and commit”为不合法提交,提交失败

Feat: 123合法提交,提交成功
提交格式为feat/fix:(空格)提交内容
6踩坑
Task只能在新建的commit-msg中执行,如果在原有的pre-commit中添加则无效,原因未知
在.net项目中添加Husky.Net提交验证的更多相关文章
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
- 在SpringBoot项目中添加logback的MDC
在SpringBoot项目中添加logback的MDC 先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...
- VS2015 项目中 添加windows服务
1. 在项目中添加winows服务 今天刚刚为自己的项目添加了windows服务,以服务的形式运行后台系统,为前端提供接口服务,下面说一下具体怎么为vs项目添加windows服务 2. 添加Windo ...
- web项目中添加logger日志
在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...
- 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片
[问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...
- Intellij IDEA在maven项目中添加外部Jar包运行
一. 问题概述 我们知道Intellij IDEA是非常好用的Java语言开发的集成环境.提供了非常多实用的功能,包括了智能代码助手.代码自动提示.代码重构.各种插件等,当然也集成了maven 正常情 ...
- 在Github的fork项目中切换分支来提交PR
在Github的fork项目中切换分支来提交PR 查看远程所有分支 git branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程 ...
- 如何在gradle项目中添加额外非开源jar包并提交代码
前提:项目开发中,遇到一个地方需要用到公司自定义的jar包,然后要放到代码里又不方便提交到私服 具体实施: 首先在项目中增加一个 libs目录,然后把这种非开源又不在私服上的jar包扔进去, 然后打开 ...
随机推荐
- 制作微软原版Windows11 PE(含Powershell)
1.adksetup下载链接:https://download.microsoft.com/download/1/f/d/1fd2291e-c0e9-4ae0-beae-fbbe0fe41a5a/ad ...
- Django笔记一之运行系统、创建视图并访问
从这一篇笔记开始将根据 Django 的官方文档,阅读整理之后,出一系列笔记教程,用作新手入门教程或者自己做查阅. 此次 Django 的版本为 3.2,且之后的一系列笔记都将以这个版本为基础,做功能 ...
- 最大流应用(Maximum Flow Application)
1. 二分图匹配(Bipartite Matching) 1.1 匹配(Matching) Def. Given an undirected graph \(G = (V, E)\), subset ...
- 多线程基础之CAS、AQS、ABA辨析
这三个单词算是多线程面试常见的问题了,也是很多小白不太懂的问题,这里给出我的理解来. 一.CAS J.U.C 并发包中的很多类都涉及到了 CAS,可以说没有 CAS 和 volatile 就没有 J. ...
- R语言文本数据挖掘(一)
文本挖掘可以视为NLP(Natural language processing,自然语言处理)的一个子领域,目标是在大量非结构化文本中整理析取出有价值的内容.由于人类语言具有很高的复杂性,例如不同语言 ...
- [大数据]Hadoop HDFS文件系统命令集
基本格式: hadoop fs -cmd [args] 1 Query 显示命令的帮助信息 # hadoop fs -help [cmd] 查看hadoop/hdfs的用户 # hdfs dfs -l ...
- [Linux]常用命令之【which/whereis/whatis】
1 which shows the full path of (shell) commands. 显示(系统)命令所在目录 [root@test ~]# which ls alias ls='ls - ...
- 微信Token验证代码的实现
微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...
- css盒子水平垂直居中的几种方式
第一种:son盒子中定位的上下左右全部为0,然后margin:auto 1 <!DOCTYPE html> 2 <html lang="en"> 3 < ...
- CentOS7---Nginx安装并配置虚拟主机
1.源码安装nginx,并提供服务脚本 源码包的获取:官网下载 实验环境:和企业环境类似,关闭防火墙,禁用selinux,使用静态IP地址 安装步骤: 步骤一:安装Nginx所需的pcre库 [roo ...