我正尝试在我的工作流中使用这个代码片段作为post-merge
和post-checkout
git钩子。
#!/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
# git hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
# Example usage
# In this example it's used to run `npm install` if package.json changed
check_run package.json "npm install"
该代码声称只在package.json
文件被更改时运行npm安装命令。
然而,在我尝试过的所有机器上,无论是否更改了package.json
文件,都会运行npm安装命令。
为了测试这个问题,我创建了一个新分支,并在当前提交处检出它,从而触发了post-checkout
git钩子。我不希望运行npm install
命令,因为package.json
没有更改。
视觉证明(请注意npm警告文本):