我使用gitosis来托管我的GIT存储库。
我希望阻止管理员以外的用户(由提交者的电子邮件标识)将更新推送到子模块。
我尝试通过预接收钩子来查看是否可以读取子模块更改的列表,但由于是一个纯repo,它无法读取.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 $su
我尝试使用git的pre- push -hook在每次推送之前执行一个构建任务。到目前为止,这个方法工作得很好(文件可以构建、添加和提交),但是文件不会被推送。代码如下:
#!/bin/sh
# Pre-Push hook to to build
# files before pushing them.
# If files are in the staging area
# the push aborts.
unstagedFiles=`expr $(git status --porcelain 2>/dev/null| grep "^ M" | wc -l)`
st
我试图将项目推送到GitLab的存储库,但出现了错误。
To https://gitlab.com/codersclan-interviews-frontend/codersclan-david-rose.git
! [remote rejected] test -> test (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/codersclan-interviews-frontend/codersclan-david-rose.git'
我该如何解决
我试图为git编写一个pre-receive hook,它将提取正在推送的代码的最新版本,并对其运行单元测试。我的代码如下所示,但是当它到达"git签出$newrev“时,我得到:
远程:致命:引用不是树: 188de39ca68e238bcd7ee9842a79397f39a5849e
在接收发生之前,我需要做些什么来检查正在被推送的代码?
#!/bin/bash
while read oldrev newrev refname
do
echo "Preparing to run unit tests for $newrev"
TEST_DIR=/op
我想写一个githook,当远程存储库接收到推送时,从存储库工作树读取信息,并根据它可以找到的数据执行操作。如果在这个钩子上有什么坏了,推应该被拒绝!当然,这只适用于非裸存储库。
我发现update钩子在调用它的时间上非常合适。我现在唯一的问题是我不能从update钩子中签出最新的参考文件,因为它还没有被集成。
#!/bin/sh
# .git/hooks/update
refname="$1"
if [ "$refname" == "refs/heads/master" ]; then
newrev="$3"
g