北京SEO

git 系统中 post-receive 钩子不能正常执行 git pull 解决方法

2019/10/10/17:46:30  阅读:1803  来源:谷歌SEO算法  标签: GDPR

今天在 git 版本控制系统中出现 post-receive 钩子不能正常执行 git pull 的操作,折腾了好久才发现是 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,下如来记录如何解决这个问题的方法.

有一个需求是本地git在push到远程 git repo 之后,在远程服务器上自动在/dir/foo下执行 git pull 的操作,想来是一个很简单的需求,不就是在远程的 foo.git 仓库中的 hook 里加一个 post-receive 的钩子,然后在钩子里加入一个 git pull 的操作,但是实际操作的时候发现有问题的,因为这样忽略了一个小细节的问题.

操作之前,头脑里想的代码如下:

  1. #!/bin/sh
  2. cd/var/git/web3/etc/puppet
  3. /usr/bin/gitpull

用这个代码在 git push ssh://git@ownlinux.org:/opt/foo.git 之后,发现远程服务器上的 /dir/foo 目录下并没有成功 pull 到最新的数据,并且终端上也有报错(remote: fatal: Not a git repository: ‘.’),后面发现 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,而不是PWD 这个,所以在 git pull 的时候提示 Not a git repository: ‘.’,其中 “.” 正是 GIT_DIR 这个环境变量的值.

钩子的代码改成下面的之后,运行正常了:

  1. #!/bin/sh
  2. unset$(gitrev-parse--local-env-vars)
  3. cd/var/git/web3/etc/puppet
  4. /usr/bin/gitpull

使用 git 做版本控制的朋友希望你不要和我一样忽略这个小细节的问题.

广告内容

git 系统中 post-receive 钩子不能正常执行 git pull 解决方法 git 系统中 post-receive 钩子不能正常执行 git pull 解决方法 git 系统中 post-receive 钩子不能正常执行 git pull 解决方法

相关阅读

热门评论

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法