在.net项目中添加Husky.Net提交验证

发布时间 2023-04-09 21:30:16作者: 上帝视角丶观众老爷

参考: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中添加则无效,原因未知