gpt4 book ai didi

Git hook 拒绝包含子模块更新的推送?

转载 作者:太空狗 更新时间:2023-10-29 13:43:21 25 4
gpt4 key购买 nike

我使用 gitosis 来托管我的 GIT 存储库。

我想阻止管理员以外的用户(由提交者的电子邮件标识)将更新推送到子模块。

我试着看看我是否可以通过预接收 Hook 读取子模块更改列表,但由于是一个裸仓库,它无法读取 .gitmodules。

#!/bin/bash
OLDREV=$1
NEWREV=$2
unset GIT_DIR
unset GIT_WORKING_TREE
SUBS=$(git show $NEWREV:.gitmodules | sed -n "s/^.*git@repo://p")

for submod in SUBS
do
echo $submod
done

exit 1

但是我得到:

remote: fatal: Path '.gitmodules' does not exist (neither on disk nor in the index).

你知道我如何读取在预接收 Hook 中推送的子模块提交吗?

最佳答案

您的问题在于您尝试阅读 OLDREVNEWREF 的方式。

Githooks 不会像您期望的那样得到它们的参数,它们被写入标准输入,这实际上意味着它们是通过管道输入的。

要正确阅读它们,您必须执行以下操作:

while read OLDREF NEWREF REFNAME
do
# Work with the references ...
done

pre-push.example Hook - 您可以在每个 git 存储库中找到它 - 对此有很好的印象。

关于Git hook 拒绝包含子模块更新的推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com