实现自定义gitlab钩子时出现问题

实现自定义gitlab钩子时出现问题,git,github,hook,gitlab,githooks,Git,Github,Hook,Gitlab,Githooks,我正在实现一个定制的gitlab钩子。当有人推送master时,我想更新一个特定的文件。然后提交此更改并将其推送到远程源。钩子如下所示: clone_repo(){ //cloning a specifc branch on my_app dir export GIT_WORK_TREE="path/my_app" } cd_app(){ cd my_app } update_file(){ // updating random.java } comm

我正在实现一个定制的gitlab钩子。当有人推送master时,我想更新一个特定的文件。然后提交此更改并将其推送到远程源。钩子如下所示:

clone_repo(){
     //cloning a specifc branch on my_app dir 
      export GIT_WORK_TREE="path/my_app"
    }
cd_app(){
    cd my_app
}
update_file(){
  // updating random.java
}
commit_file(){
    git commit -m "commit from hook" random.java
}


while read oldrev newrev refname
do
 if [ ${refname} = "refs/heads/master" ]
 then
     clone_repo
     cd_app && update_file
     commit_file && push_it
     exit 0
 fi
done
钩子正在运行,但是
cd\u应用程序和&update\u文件
没有执行应该执行的操作(不更新update\u文件)。我假设
cd\u app
没有更改目录(通过shell打印)

但是对于测试,当我在检查
if
之前设置
refname=“refs/heads/master”
时,它工作正常


找不到自定义_挂钩的gitlab日志的位置。我好像错过了什么。你们能给我提供进一步的参考资料或确定我做错了什么吗?

以下是我如何为我的系统做的

首先,GIT_WORK_树如下所示:

$\GIT\u工作树
$pwd
/主页/git/登录地址\u post\u接收
$ 
$git远程-v
origin/home/git/repositories/gitlab user/loging_at_post_receive.git/(fetch)
origin/home/git/repositories/gitlab user/loging_at_post_receive.git/(推送)
$ 
$ls
log.txt
$ 
$git日志--一行
5aecefe首次提交
接下来,钩子脚本如下所示:

$#裸存储库
$pwd
/home/git/repositories/gitlab user/test_hook.git
$ 
$cat挂钩/邮政接收
#!/bin/bash
克隆(repo){
#克隆my_app dir上的特定分支
导出GIT_工作树=“/home/GIT/loging_at_post_receive”
}
cd_应用程序(){
cd/home/git/loging\u at\u post\u receive
}
更新_文件(){
日期>>log.txt
回显“更新文件”
}
提交文件(){
git--git dir=.git add log.txt
git--git dir=.git commit-m“从钩子提交”
回显“提交文件”
}
推它{
git--git dir=.git推送源主机
回声“推它”
}
读取oldrev newrev refname时
做
如果[${refname}=“refs/heads/master”]
然后
克隆报告
cd_应用程序和更新_文件(&U)
提交文件并推送文件(&U)
出口0
fi
完成
然后,git从PC推送到GitLab。(请注意“远程:”区域)

在PC上 $echo 1>>自述文件 $git提交-am“测试” $git推送原始主机 [master 9aed67e]测试 1个文件已更改,1个插入(+),0个删除(-) 计数对象:5,完成。 写入对象:100%(3/3),239字节,完成。 总计3(增量0),重复使用0(增量0) 远程:更新\u文件 远程:[master 0ce599e]从钩子提交 远程:1个文件已更改,1个插入(+) 远程:提交文件 远程:To/home/git/repositories/gitlab user/loging_at_post_receive.git/ 远程:5aecefe..0ce599e主控->主控 遥控器:按一下 到https://gitlab-server/gitlab-user/test_hook.git 712a3d1..9aed67e主机->主机 结果

$\GIT\u工作树
$pwd
/主页/git/登录地址\u post\u接收
$ 
$git日志--一行
0ce599e从钩子提交
5aecefe首次提交
$ 
$git日志源/主--oneline
0ce599e从钩子提交
5aecefe首次提交