起点:
- Ubuntu 20.04
- Gitolite(/home/git/(
- Webspace/var/www/Webspace(通常由www数据所有:www数据(
- Git用户(在www数据组中,也尝试过不在组中(
我想以git用户的身份更新网络空间,并将postreceive更新到www数据目录。在安装Gitolite之前,我已经将其存档,但它的工作方式似乎与以前不同(或者我缺少了一些东西(。明确一点:postreceive是在推送后执行的(Gitolite上通常不会这样(。。。这段时间也很难存档。
编辑:为了明确起见:我想归档Git和www数据可以访问和修改相同的文件
我尝试了什么:
- chmod 777-R/var/www/webspace(在此之后git可以访问,但nginx返回403?(
- 将Git用户添加到www数据组
- chown www数据:git-R/var/www/webspace
- chown git:www数据-R/var/www/webspace
- chown git:git-R/var/www/webspace
- chown www数据:www数据-R/var/www/webspace(组内有和没有git((有和没有777(
- 手动执行后期接收(不允许操作(
- 以root身份手动执行post-rereceive(好吧…当然可以,但这不是重点(
- 。。。也许还有一些我可能错过的步骤
到目前为止我注意到的是:
- 与Git相反,Gitolite使用-rw-------(如果我没记错的话(检查repo,也许这就是为什么它不适用于Gitolite,而是适用于Git
代码(不是说它很重要,只是列出所有内容(:
- 张贴接收
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f
也许我只是错过了什么,但请帮帮我。
尝试并遵循"添加其他(非更新(挂钩";以便Gitolite调用相关的postreceivehook。
-
如果
%RC
块内的rc
文件中尚未存在该行,则将其添加到该文件中;如果已经存在并注释掉,则取消注释:LOCAL_CODE => "$ENV{HOME}/local",
-
将钩子放入该目录,位于名为"的子目录中;钩子/普通":
# log on to gitolite hosting user on the server, then: cd $HOME mkdir -p local/hooks/common cp your-post-receive-hook local/hooks/common/post-receive chmod +x local/hooks/common/post-receive
-
运行
gitolite setup
使钩子传播到现有的repo(在此之后创建的repo无论如何都会得到它们(。
将用户(在我的情况下是git(添加到Web空间组(对我来说是www数据(
sudo usermod -a -G www-data git
如果您以用户身份登录,请注销以重新加载组。
logout
#or
exit
#or
CTRL+A+D
(如果您想以该用户的身份重新检查组登录,并键入"groups"以查看用户所在的组(
确保网络空间归正确的组所有。对我来说:
sudo chown www-data:www-data -R /var/www/webspace
(如果你想重新检查这一点,你可以在目录中键入"ls-g"(
在我的情况下;后接收";有一点,因为签出后权限总是-rw-,所以这是我的"后接收":
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f #default line to checkout
chmod -R a+r /var/www/webspace #added by me because of permission issues
为了方便起见;后接收";在repo目录中(/home/git/restores/srepo/hook/post-rereceive(。文档告诉你创建一个新文件夹(/home/git/local/specific hook/repo/post-rereceive(但他们告诉你自己命名(
*上面写的所有路径、名称、组和权限仅适用于我。它们可能因您的安装而异。
真正解决我问题的是什么:
- 更改组后注销
- 后接收中的更改权限(chmod(