Visual Studio 无法运行提交前/提交后挂钩:/usr/bin/env 'bash':没有这样的文件或目录

J4N*_*J4N 6 git visual-studio visual-studio-code husky

我们有一个带有 .Net 解决方案的现有 git 存储库。我们正在添加一个网络应用程序。Web 应用程序(角度)位于特定的子文件夹中。

我们确实安装了一些 pre-post commit hook,以确保文件正确检查。使用 VS Code 或源代码树提交时一切正常。但是当我尝试直接从 Visual Studio 提交某些内容时,我收到此错误:

/usr/bin/env: 'bash': No such file or directory
Run Code Online (Sandbox Code Playgroud)

有办法让它发挥作用吗?

作为参考,这是我的钩子:

结帐后

#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/post-checkout'.\n"; exit 2; }
git lfs post-checkout "$@"
Run Code Online (Sandbox Code Playgroud)

提交后

#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/post-commit'.\n"; exit 2; }
git lfs post-commit "$@"
Run Code Online (Sandbox Code Playgroud)

合并后

#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/post-merge'.\n"; exit 2; }
git lfs post-merge "$@"

cd ./Src/Frontend
npx git-pull-run --pattern "package-lock.json" --command "npm install"
Run Code Online (Sandbox Code Playgroud)

预提交

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

cd ./Src/Frontend
npm run lint
Run Code Online (Sandbox Code Playgroud)

预推

#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/pre-push'.\n"; exit 2; }
git lfs pre-push "$@"
Run Code Online (Sandbox Code Playgroud)

必须有一种方法可以使用预/后提交挂钩,同时仍然能够在 VS Code 和 VS 中提交,对吧?我应该怎么办?

Von*_*onC 7

检查您的%PATH%第一个,其中应包括C:\Program Files\Git\bin, 所在bash.exe位置。

或者修改shebang 指令以进行测试:

#!C:/Program\ Files/Git/git-bash.exe
Run Code Online (Sandbox Code Playgroud)

J4v4scr1pt在评论中添加:

  • 找到了如何设置环境变量

  • 添加typecode/husky 问题 1038 的建议

    只需添加C:\Program Files\Git\usr\bin\cygpath.exe到您的PATH环境变量,它应该可以完美工作

  • 陈述:

    C:\Program Files\Git\usr\bin\在“ ”中添加了“ User variables for userName”,其中“ /usr/”起到了作用。
    我需要重新启动 VS。