我正在尝试将预提交挂钩中提交的源代码格式化为,但我只想在特定存储库中时执行此挂钩。我检查我是否在此存储库中的“聪明”方法是检查我的存储库的遥控器中是否有子字符串。到现在为止一切都很好。
但是,我的特殊存储库需要格式化,具有子模块,因此当我从子模块的上下文中提交某些内容时,我还希望能够检查超级存储库的遥控器。我的解决方案如下:
test=$(cd ../../; git remote -vv | grep 'my_special_repo')
echo $test
if [[ $test == *"my_special_repo"* ]]; then
echo "This is a my_special_repo child submodule"
echo "Commit should be formatted"
else
exit 0
fi
这是行不通的。当我
echo $test
时它是空的。
但是这个:
test=$(cd ../../; echo $PWD; git remote -vv | grep 'my_special_repo')
echo $test
if [[ $test == *"my_special_repo"* ]]; then
echo "This is a my_special_repo child submodule"
echo "Commit should be formatted"
else
exit 0
fi
工作正常。
我发现这个事实,
cd any/path && git any-command
在其他问题中的钩子或相关问题/答案中的评论中不起作用,但没有解释。
PS:我的git版本是2.41.0.windows.1