参考: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提交验证的更多相关文章

  1. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  2. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

  3. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  4. 在SpringBoot项目中添加logback的MDC

    在SpringBoot项目中添加logback的MDC     先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...

  5. VS2015 项目中 添加windows服务

    1. 在项目中添加winows服务 今天刚刚为自己的项目添加了windows服务,以服务的形式运行后台系统,为前端提供接口服务,下面说一下具体怎么为vs项目添加windows服务 2. 添加Windo ...

  6. web项目中添加logger日志

    在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...

  7. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  8. Intellij IDEA在maven项目中添加外部Jar包运行

    一. 问题概述 我们知道Intellij IDEA是非常好用的Java语言开发的集成环境.提供了非常多实用的功能,包括了智能代码助手.代码自动提示.代码重构.各种插件等,当然也集成了maven 正常情 ...

  9. 在Github的fork项目中切换分支来提交PR

    在Github的fork项目中切换分支来提交PR 查看远程所有分支 git branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程 ...

  10. 如何在gradle项目中添加额外非开源jar包并提交代码

    前提:项目开发中,遇到一个地方需要用到公司自定义的jar包,然后要放到代码里又不方便提交到私服 具体实施: 首先在项目中增加一个 libs目录,然后把这种非开源又不在私服上的jar包扔进去, 然后打开 ...

随机推荐

  1. MGF multivariate generating function 多变量生成函数

    目录 MGF多变量生成函数multivariate generating function 定义 例子 Extremal parameters III.8.1 largest components 例 ...

  2. nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别

    本文所使用的环境信息如下: windows11 (主机系统) virtual-box-7.0环境下的ubuntu-18.04 nginx-1.22.1 (linux) 斜杠结尾之争 实践中,nginx ...

  3. 对偶问题影子价格求解—R实现

    table { margin: auto } 线性规划的对偶问题 线性规划对偶问题概述 例1:某厂生产A,B, C三种产品,每种产品的单位利润分别为12,18和15,资源消耗如下表,求总利润最大的生产 ...

  4. CSS伪元素详解以及伪元素与伪类的区别

    前面已经介绍过CSS伪类的知识,具体可见前文 CSS伪类知识详解. 伪元素常常被误解为伪类,主要在于他们的语法相似,都是对于选择器功能的扩展,相似程度很高导致被混淆. 本文通过详细介绍伪元素和常见的使 ...

  5. kubernetes 设置 Master 可调度与不可调度

    kubernetes 设置 Master 可调度与不可调度 语法 kubectl taint node [node] key=value[effect] [effect] 可取值: [ NoSched ...

  6. jinjia2基本用法

    前言这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希望 ...

  7. [操作系统/网络]Windows安装Openssh(scp / ssh等)

    1 文由 由于项目有这么一个数据同步需求: [业务建设系统方]在Linux上将Oracle的全量数据(.dmp文件)定时推送到[大数据平台建设方]中的一台Linux服务器上: 然后,[大数据平台建设方 ...

  8. Redis 源码解析之通用双向链表(adlist)

    Redis 源码解析之通用双向链表(adlist) 概述 Redis源码中广泛使用 adlist(A generic doubly linked list),作为一种通用的双向链表,用于简单的数据集合 ...

  9. Redis读书笔记(三)

    单机数据库的实现 Redis数据库 Redis数据库的实现 struct redisServer { //... //保存服务器中的所有数据库, 数组 redisDB *db; //服务器的数据库数量 ...

  10. Springboot集成MongoDB存储文件、读取文件

    一.前言和开发环境及配置 可以转载,但请注明出处. 之前自己写的SpringBoot整合MongoDB的聚合查询操作,感兴趣的可以点击查阅. https://www.cnblogs.com/zaoyu ...