增加或修改前校验

// 首先对表单form进行校验
this.$refs.addRolesFormRef.validate(async valid => {
    // 校验失败,直接返回
    if(!valid) return
    // 校验成功,发起请求
    const {data:res} = await this.$http.post('roles',this.addRolesForm);
    // 如果返回状态不是201,则提示失败
    if(res.meta.status !== 201) return this.$message.error('添加失败!');
    // 提示用户成功
    this.$message.success('添加成功!');
    // 关闭对话框
    this.addRolesDialogVisible = false;
    // 重新获取数据,刷新列表
    this.getRolesList();
})
<think> 首先,用户的问题是关于在git commit时增加空白行校验的方法。用户引用了多个来源,但这些引用是关于git commit的校验,包括eslint校验、commit信息格式校验等。用户特别提到“空白行校验”,所以我需要专注于如何添加一个钩子来检查提交信息是否包含空白行。 关键点: - 用户想确保git commit消息中有空白行。 - 这通常用于强制提交消息有标题和正文之间的空白行,以符合某些约定,如Conventional Commits。 从引用中提取相关信息: - 引用[2]提到pre-commit钩子,它可以用于检查即将提交的快照。 - 引用[3]讨论了如何创建全局的commit-msg钩子来校验提交信息。 - 引用[4]和[5]提到了husky和commitlint,这些是用于管理Git钩子的工具。 空白行校验通常涉及commit-msg钩子,因为它检查提交消息的内容。 步骤来实现空白行校验: 1. **创建修改commit-msg钩子**:这个钩子在提交消息被使用运行,可以修改验证提交消息。 2. **编写脚本来检查空白行**:使用shell脚本其他语言来检查提交消息文件是否包含空白行。 - 提交消息存储在临时文件中,钩子可以读取这个文件。 - 检查消息中是否有至少一个空白行(例如,在标题和正文之间)。 3. **集成到Git钩子**: - 手动方式:直接在.git/hooks/目录下创建commit-msg文件。 - 使用工具:如Husky(用于Node.js项目)来管理钩子。 4. **全局设置**:如果需要应用到所有仓库,可以设置全局钩子模板。 具体方法: - **手动创建钩子**: - 进入仓库的.git/hooks目录。 - 创建commit-msg文件(如果不存在)。 - 添加脚本内容:例如,使用bash脚本读取提交消息文件($1),检查是否有空白行。 - 如果没有空白行,退出非零值以阻止提交。 - **使用Husky和commitlint**:commitlint是一个校验提交消息格式的工具,可以配置来检查空白行。 - 安装commitlint和必要的配置。 - 配置commitlint规则来要求空白行。 - 使用Husky来运行commitlint在commit-msg钩子上。 对于空白行校验,commitlint有一个规则`body-leading-blank`和`footer-leading-blank`,可以用来强制标题和正文之间、正文和脚注之间有空白行。 参考用户引用的内容: - 引用[5]提到在package.json中配置husky来运行commitlint。 - 引用[4]提到husky + .git/hooks的结合。 所以,推荐方法是: 1. 使用Node.js工具如Husky和commitlint。 2. 配置commitlint来启用空白行规则。 安装步骤: - 安装Husky:`npm install husky --save-dev` - 安装commitlint:`npm install @commitlint/cli @commitlint/config-conventional --save-dev` - 创建commitlint配置文件(如.commitlintrc.json)并设置规则: ```json { "extends": ["@commitlint/config-conventional"], "rules": { "body-leading-blank": [2, "always"], // 强制正文有空白行 "footer-leading-blank": [2, "always"] // 强制脚注有空白行(如果需要) } } ``` - 配置Husky:在package.json中添加: ```json "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } } ``` 如果没有使用Node.js,可以使用纯Git钩子: - 创建.git/hooks/commit-msg文件: ```bash #!/bin/sh # 读取提交消息文件 commit_msg=$(cat "$1") # 检查是否有空白行(例如,空行) if ! grep -q '^$' "$1"; then echo "错误:提交消息必须包含空白行在标题和正文之间。" >&2 exit 1 fi ``` - 确保文件可执行:`chmod +x .git/hooks/commit-msg` 在回答中,我需要: - 使用中文回答。 - 结构清晰,逐步指导。 - 引用相关段落,末尾添加引用标识。 - 生成相关问题。 生成相关问题: 1. 如何在所有Git仓库中全局设置空白行校验? 2. 空白行校验在哪些提交约定中是必要的? 3. 如何自定义Git钩子以添加其他校验规则? 最后,确保回答真实可靠,基于标准实践。 </think> ### 如何在Git Commit时增加空白行校验 在Git commit时增加空白行校验,通常是为了强制提交消息格式规范(如Conventional Commits),要求标题和正文之间必须有空白行。以下是详细步骤,分为手动方法和使用自动化工具方法。核心原理是通过Git的`commit-msg`钩子(在提交信息写入触发)来校验消息内容。 --- ### 方法1: 手动创建Git钩子(无需额外工具) 此方法直接在仓库的`.git/hooks`目录下添加脚本,适合简单场景非Node.js项目。 1. **进入仓库的Git钩子目录**: ```bash cd /path/to/your/repo/.git/hooks ``` 2. **创建修改`commit-msg`钩子文件**: 使用文本编辑器(如nanovim)创建文件: ```bash nano commit-msg ``` 3. **添加校验脚本**: 以下脚本检查提交消息中是否包含至少一个空白行(空行)。如果缺失,则阻止提交。 ```bash #!/bin/sh # 读取提交消息文件($1是Git传递的临时文件路径) commit_msg=$(cat "$1") # 检查是否存在空白行(正则表达式匹配空行) if ! grep -q '^$' "$1"; then echo "错误:提交消息必须包含空白行(标题与正文之间)!" >&2 echo "示例格式:" >&2 echo "feat: 添加新功能" >&2 echo "" >&2 # 空白行 echo "这里是详细描述。" >&2 exit 1 # 非零退出码阻止提交 fi ``` 4. **赋予脚本执行权限**: ```bash chmod +x commit-msg ``` 5. **测试效果**: - 提交无效消息(无空白行): ```bash git commit -m "fix:修复bug" --allow-empty # 预期输出错误并阻止提交 ``` - 提交有效消息(含空白行): ```bash git commit -m "fix: 修复bug"$'\n\n'"详细信息" --allow-empty # 预期提交成功 ``` 此方法简单直接,但需为每个仓库单独配置[^3]。 --- ### 方法2: 使用Husky和commitlint(推荐,适合Node.js项目) 利用工具自动化管理,支持更复杂的规则(如Conventional Commits)。`commitlint`的`body-leading-blank`规则专门用于强制空白行。 1. **安装依赖**: 在项目根目录运行: ```bash npm install husky @commitlint/cli @commitlint/config-conventional --save-dev ``` 2. **创建commitlint配置文件**: 在项目根目录创建`.commitlintrc.json`,启用空白行校验: ```json { "extends": ["@commitlint/config-conventional"], "rules": { "body-leading-blank": [2, "always"] // 强制正文必须有空白行 } } ``` 3. **配置Husky钩子**: 在`package.json`中添加Husky配置: ```json { "scripts": { "prepare": "husky install" // 自动初始化Husky }, "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" // 触发commitlint校验 } } } ``` 运行以下命令激活Husky: ```bash npm run prepare ``` 4. **测试效果**: - 无效提交(无空白行): ```bash git commit -m "feat: 新功能" # 被拒绝,提示需空白行 ``` - 有效提交(含空白行): ```bash git commit -m "feat: 新功能"$'\n\n'"详细描述" # 提交成功 ``` 此方法易于维护,且支持团队共享配置[^4][^5]。 --- ### 全局配置(所有仓库生效) 若需所有Git仓库都启用空白行校验: 1. 创建全局Git模板目录: ```bash git config --global init.templatedir ~/.git-templates mkdir -p ~/.git-templates/hooks ``` 2. 将上述手动脚本保存到`~/.git-templates/hooks/commit-msg`。 3. 应用到现有仓库: ```bash find ~ -type d -name ".git" 2>/dev/null | while read gitdir; do cp ~/.git-templates/hooks/commit-msg "$gitdir/hooks/" done ``` --- ### 注意事项 - **绕过校验**:紧急时可添加`--no-verify`参数(`git commit -n -m "消息"`),但不推荐[^2]。 - **空白行规则**:空白行通常位于标题和正文之间(例如:`标题\n\n正文`),Conventional Commits规范中这是强制要求。 - **错误处理**:脚本校验失败时,Git会显示自定义错误消息,帮助用户修正格式。 通过以上方法,您可以确保所有提交消息符合格式规范,提升代码历史可读性[^1][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值