GIT 批量挂钩 Windows

GIT Hooks on Windows with batch

我正在尝试创建一个 git 挂钩规则,只有在文件 myexamplefile.txt 发生更改时才能提交。

我将文件 .git\hooks\commit-msg 设置为:

for /f "tokens=*" %i in ('git status ^| find /c "AssemblyInfo.cs"') do set x=%i
if %x% (
    echo "nice"
    exit 0
)
else (
    echo "it's bad"
    exit 1
)

我在这段代码中工作了一段时间,但我遇到了几个错误,现在我得到:

line 28: syntax error near unexpected token `"tokens=*"'

这个钩子怎么写?重要的是要注意我在 windows 环境中。

任何 git 挂钩将默认在 bash 会话中执行,而不是 CMD 会话。
在 Windows 上,Windows 嵌入的 bash 的 Git 将解释挂钩脚本。

所以尝试在 bash 中重写你的钩子:

#!/bin/bash

f=$(git status | grep "AssemblyInfo.cs")
if [[ "${f}" != "" ]]; then
    echo "nice"
    exit 0
else
    echo "darn it"
    exit 1
fi