我已经设置并配置了gitolite
,并希望为其配置cgit
Web界面。
问题:
使用 cgit
浏览目录时,出现错误:
未找到存储库
设置
创建新存储库时gitolite
在 /home/git/repositories
下自动为其创建一个相应的目录。 cgit
配置为使用以下方法读取这些存储库:
project-list=/home/git/projects.list
scan-path=/home/git/repositories
问题是这些存储库似乎不是裸存储库。如果我使用
git clone --bare user@server:repo
它似乎有效。我真的不想每次签入新存储库时都手动执行此操作。为什么gitolite
创建的存储库还没有裸露?如何实现自动化?
在尝试多次验证之后 - 这只是文件系统权限问题。尝试后
chown -R www-data:www-data repositories/repo
要强制我的 Apache 用户拥有所有权 运行cgit
,存储库将显示在 Web 界面中。
正确的解决方案是将 apache 用户添加到 git
组中,并将 .gitolite.rc
中umask
的值更改为
$REPO_UMASK=0027
注意:使用Gitolite V3或"g3",这将是(见文档):
$UMASK=0027
这与我之前遇到的权限问题类似。我使用脚本来修复 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