我已设置并配置gitolite
,并希望为其配置cgit
网络界面。
使用cgit
浏览目录时出现错误:
找不到存储库
创建新存储库时gitolite
会在/home/git/repositories
下自动为其创建相应的目录。 cgit
configuered使用以下内容阅读这些存储库:
project-list=/home/git/projects.list
scan-path=/home/git/repositories
问题是这些存储库似乎不是裸存储库。如果我使用
手动克隆其中一个存储库git clone --bare user@server:repo
它似乎有效。每次签入新存储库时,我都不想手动执行此操作。为什么gitolite
裸创建的存储库不存在?我该如何实现自动化?
答案 0 :(得分:5)
结果 - 尝试多次验证后 - 这只是一个文件系统权限问题。尝试后
chown -R www-data:www-data repositories/repo
强制所有权进入运行cgit
的apache用户,存储库显示在Web界面中。
正确的解决方案是将apache用户添加到git
组,并将umask
中的值.gitolite.rc
更改为
$REPO_UMASK=0027
注意:使用Gitolite V3 or 'g3',即see doc):
$UMASK=0027
答案 1 :(得分:0)
与之前遇到的许可问题类似。 我使用脚本来修复git存储库的权限。
脚本:fix_perm_cgit.sh
#!/bin/sh
reponame="$1"
if [ ! -d "$reponame" ]; then
echo "missign repo_name"
exit 1
fi
find "$reponame" -type d | while read fn ; do chmod og+rx $fn ; echo "d-> $fn" ; done
find "$reponame" -type f | while read fn ; do chmod og+r $fn ; echo "f-> $fn" ; done