我想在有人推送到远程仓库后自动更新我的 redmine 项目存储库。目前 redmine 中的杜松子酒已经启动并且工作正常。但是在使用钩子自动更新后,我进入The entry or revision was not found in the repository.
了 redmine。
要在 redime 中设置 git,我遵循redmine wiki,因此 repo 是通过git clone --bare
要更新 redmine 的 git 存储库,我使用它cd /srv/www/redmine.domain.com/git_repositories/linode.git && git fetch && git reset --soft refs/remotes/origin/master
git
如果在用户下从命令行运行,则手动更新可以正常工作
手动执行时的屏幕截图是
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From domain.com:linode
* [new branch] master -> origin/master
post-receive
运行表单钩子时同样无法正常工作(请参阅上面的错误)。在同一用户(git)下运行。钩子的第一行是#!/bin/sh
配置: ubuntu 上的 git (1.7.0.4) + gitolite (1.5.7)
我检查了 GIT_DIR 系统变量字节命令 SET remote: /srv/www/redmine.domain.com/git_repositories/linode.git[K remote: GIT_DIR='.'[K
我什至试图git path
通过
export GIT_DIR=/srv/www/redmine.domain.com/git_repositories/linode.git
or unset GIT_DIR
但没有任何帮助。
钩子的结果
echo "Post receive-hook => updating Redmine repository"
#env -i git reset --hard
#unset $(git rev-parse --local-env-vars)
#unset GIT_DIR
cd /srv/www/redmine.domain.com/git_repositories/linode.git
pwd
git fetch
git reset --soft refs/remotes/origin/master
是
Pushing to git@domain.com:linode
remote: Post receive-hook => updating Redmine repository[K
remote: From domain.com:linode[K
remote: /srv/www/redmine.domain.com/git_repositories/linode.git[K
remote: 4755447..13b8e3d master -> origin/master[K
To git@domain.com:linode
4755447..13b8e3d master -> master
我从call-git-pull-from-a-git-post-update-hook和git-post-receive-hook-with-git-pull-failed-to-find-a-valid-git-directory尝试了一些提示但没有任何帮助
更新
如果我尝试
echo "Post receive-hook => updating Redmine repository"
export GIT_DIR=
cd /srv/www/domain.com/git_repositories/linode.git
echo "Resetting working tree..."
git reset --hard
echo "Finished resetting working tree."
git fetch
git reset --soft refs/remotes/origin/master
我得到这个 + redmine 存储库没有被触及并且可以从 redmine 访问
Pushing to git@domain.com:linode
remote: Post receive-hook => updating Redmine repository[K
remote: Resetting working tree...[K
remote: fatal: Not a git repository: ''[K
remote: Finished resetting working tree.[K
remote: fatal: Not a git repository: ''[K
remote: fatal: Not a git repository: ''[K
To git@domain.com:linode
c553a15..854d159 master -> master
更新2
我发现如果我git fetch
从钩子然后git reset --soft refs/remotes/origin/master
从命令行它不起作用。我在 redmine 中收到上述错误。我git fetch
从命令行执行,然后一切正常。来自钩子和命令行“git fetch”命令的控制台消息在我看来是一样的。