我设置了两台服务器(据我所知)完全一样.在其中一个上,使用git一直很好,但是在第二个上,我开始收到这个错误:
致命:远程端意外挂起
错误:边带解复用器出错
两者之间的一切都是相同的,包括.git/hooks/post-receive文件的内容.
配置中是否有一步我错过了什么地方?我已经尝试过两次重新启动回购,但无济于事.
我的收件后文件如下:
#!/ bin/sh
cd ..
env -i git reset --hard
我们使用带有中央仓库的git(使用Gitosis).我已经创建了一个post-receive挂钩,只要将更改推送到中央存储库,就会生成一封发送到dev邮件列表的电子邮件,并从git repo中的文档文件夹生成文档.
因此,在~git /我有一个目录,我们称之为'a',其中包含git repo的克隆.后接收挂钩看起来像:
#!/bin/bash
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
( cd ~git/a && git pull &> ~git/pull_log.log && php ~git/a/scripts/generate_markdown_documentation.php &> ~git/doc_log.log )
Run Code Online (Sandbox Code Playgroud)
电子邮件脚本正在运行,但文档生成却没有.pull_log.log的内容是:
fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)
这让我觉得它没有改变到上面脚本第5行的正确目录.我错了吗?我怎样才能让它发挥作用?
编辑:我已按照回复中的建议更新了post-receive hook.该脚本现在是:
#!/bin/bash
function die {
echo "$*" >&2; exit 1
}
function checkgit {
[ -d "$1/.git" ] || die "$1 could not possibly be a git repo; $1/.git is not a dir"
}
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
( set -x
checkgit …Run Code Online (Sandbox Code Playgroud) 我创建了一个预提交钩子,它接受数据库转储并将其保存在我的应用程序/文件夹下的文件中,该文件也在git repo中,保存后我将文件添加到提交列表中.以下是我的预提交文件中的代码
D:/xampp/mysql/bin/mysqldump -u root -pxyz --skip-extended-insert [database] > D:/xampp/htdocs/app/application/[database].sql
cd D:/xampp/htdocs/app/application
git add [database].sql
Run Code Online (Sandbox Code Playgroud)
我尝试直接通过命令提示符运行预提交代码,它没有任何错误,但当我尝试通过git bash提交代码时,我得到此错误
fatal: Not a git repository: '.git'
Run Code Online (Sandbox Code Playgroud)
我假设它是因为预提交文件中使用的git命令,任何人都可以告诉我这个文件中有什么错误以及我应该如何修改它
我正在gitosis为中央存储库编写post-push hook
它将更新从中央存储库提取到测试环境
nano /var/git/repositories/holding.git/hooks/post-update
#!/bin/bash
cd /var/vh/holding;
git reset --hard;
git checkout testing;
git pull;
Run Code Online (Sandbox Code Playgroud)
这是我在推送客户端后获得的(开发虚拟机)
# blah ...
Counting objects: 57, done.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (30/30), 3.42 KiB, done.
Total 30 (delta 18), reused 0 (delta 0)
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
To git@cheby.ru:holding.git
233b5a2..0f46cd8 testing -> testing
Run Code Online (Sandbox Code Playgroud)
显然,我试图告诉git,它应该在哪里拉动,但失败了.
在bash脚本中为指定的工作副本运行git命令的正确方法是什么?