预提交挂钩权限在脚本内部被拒绝
Pre-commit hook permission denied inside script
我有以下预提交挂钩:
#!/bin/bash
set -e
result=''
for file in $(find rest/src/main/groovy/ru/naumen/modules -name '*.groovy' | sort); do
filename=basename "$file"
result+=echo "${filename//.groovy/}",
done
result+='smpUtils'
sed -i -r "s|modules = .*|modules = $result|g" rest/smpsync.ini
git add rest/smpsync.ini
我在第 8 行收到 Permission denied
错误
filename=basename "$file"
而且我无法确定其中的原因。
Hook本身有执行权(chmod +x .git/hooks/pre-commit
)
./rest/src/main/groovy/ru/naumen/modules
中的整个 directories/files 树拥有 read/write 的权利并且属于我的用户。
试试看:
filename="$(basename "$file")"
为了在你的 filename
变量中得到 command basename
的结果。
@VonC 在变量赋值中提到问题 #1
filename=basename "$file"
-> filename=$(basename "$file")
问题 #2 在第 #9 行(我刚刚删除了 echo
):
result+=echo "${filename//.groovy/}",
-> result+="${filename//.groovy/}",
我有以下预提交挂钩:
#!/bin/bash
set -e
result=''
for file in $(find rest/src/main/groovy/ru/naumen/modules -name '*.groovy' | sort); do
filename=basename "$file"
result+=echo "${filename//.groovy/}",
done
result+='smpUtils'
sed -i -r "s|modules = .*|modules = $result|g" rest/smpsync.ini
git add rest/smpsync.ini
我在第 8 行收到 Permission denied
错误
filename=basename "$file"
而且我无法确定其中的原因。
Hook本身有执行权(chmod +x .git/hooks/pre-commit
)
./rest/src/main/groovy/ru/naumen/modules
中的整个 directories/files 树拥有 read/write 的权利并且属于我的用户。
试试看:
filename="$(basename "$file")"
为了在你的 filename
变量中得到 command basename
的结果。
@VonC 在变量赋值中提到问题 #1
filename=basename "$file"
-> filename=$(basename "$file")
问题 #2 在第 #9 行(我刚刚删除了 echo
):
result+=echo "${filename//.groovy/}",
-> result+="${filename//.groovy/}",