运行环境是CentOS6.3+Apache2+Phusion passenger+Redmine2.4.2+Ruby1.9.3+Git1.7.1
Redmine在页面上的提示信息是:
The entry or revision was not found in the repository.
版本库中不存在该条目和(或)其修订版本。
这个错误提示很粗略,也具有误导性,实际上错误原因可能有:
1. git路径不正确,redmine会寻找/usr/bin/git来执行,如果git可执行命令不在那个目录下面,那么需要做个软链接,或者把git path添加到系统运行路径环境变量中
2. 权限不正确,redmine是以apache用户(具体用户名看apache的配置,比如我的是www)来运行的,通过查看config/enviroment.rb文件属性来确认:
[[email protected] log]# ll ../config/environment.rb
-rw-rw-r-- 1 www www 592 Apr 11 12:31 ../config/environment.rb
那么需要把www用户添加到git group中:
vi /etc/group
添加这一行:git:x:1638:www
把git repos的路径用户修改为www:www:
chown -R www:www /opt/git/repos/
3. 如果上述1和2的问题都没有,那么很可能是本身的git库不正确。
切换redmine进入development模式,查看development.log日志,可以看到在点击项目版本库标签时,redmine发出的git命令信息:
git --git-dir '/opt/git/repos/ufcms.git/' log --no-color --raw git --git-dir '/opt/git/repos/ufcms.git/' ls-tree -l 'HEAD:'
手动在命令行下执行,如果提示:fatal: Not a git repository: '/opt/git/repos/ufcms.git/'
可以确认是git库路径不正确,比如你可能是从github上克隆下来的git库,
git clone --bare git://github.com/iefreer/ufcms.git
那么上述命令会在本地生成一个git库,不过路径不是 /opt/git/repos/ufcms.git而是/opt/git/repos/ufcms/.git,
需要在Redmine项目版本库配置中把git路径修改正确。
另外在开发模式下还可以通过查看log/development.scm.stderr.log来获取准确的错误信息。
参考问题链接:
http://www.redmine.org/boards/2/topics/19606
by iefreer