Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Visual studio 2019 git预提交挂钩正在忽略perl命令_Bash_Git_Perl_Visual Studio 2019_Githooks - Fatal编程技术网

Bash Visual studio 2019 git预提交挂钩正在忽略perl命令

Bash Visual studio 2019 git预提交挂钩正在忽略perl命令,bash,git,perl,visual-studio-2019,githooks,Bash,Git,Perl,Visual Studio 2019,Githooks,我为我的项目创建了预提交钩子。如果我通过命令行或Git Extensions GUI提交更改,它可以正常工作。但如果我通过VisualStudio提交我的更改,由于某种原因perl命令会被忽略,什么也不做,输出文件是相同的 如果.json文件与我的正则表达式匹配,我将尝试删除其中的一些行。这是我在预提交钩子中使用的脚本 for file in $(git diff --cached --name-only) do if [[ $file == "path/to/my/file&

我为我的项目创建了预提交钩子。如果我通过命令行或Git Extensions GUI提交更改,它可以正常工作。但如果我通过VisualStudio提交我的更改,由于某种原因perl命令会被忽略,什么也不做,输出文件是相同的

如果.json文件与我的正则表达式匹配,我将尝试删除其中的一些行。这是我在预提交钩子中使用的脚本

for file in $(git diff --cached --name-only)
do
    if [[ $file == "path/to/my/file"* ]]; then
        file="./${file}"
        perl -i -pne 'BEGIN {undef $/} s/^\s*"id":.*?\r?\n//img' $file
        perl -i -pne 'BEGIN {undef $/} s/,(\s*})/$1/isg' $file
        git add $file
    fi
done

VisualStudio似乎有自己的Git实现,它没有perl命令,因此被忽略了。有两种可能的解决方案:

  • 将官方Git安装到VS安装目录()
  • 使用sed或其他命令替换所需字符串