【发布时间】:2013-10-29 12:20:45
【问题描述】:
我需要在 Linux 机器上创建一个 Git 存储库,然后通过 HTTP 访问它。还需要一个用户的完全访问权限和对非用户的只读权限。
我之前创建了本地存储库,但我不知道如何创建它(例如:在 /var/www 或 /opt/git/... 内部)
我试过这样做:
-sudo 将 GitHub 存储库克隆到 /var/www/repos/repo.git
-cd /var/www/repos/repo.git
-sudo git --bare 更新服务器信息
-sudo mv hooks/post-update.sample hooks/post-update
-sudo 服务 apache2 重启
然后我尝试从另一台机器访问这个存储库:
-使用浏览器:(http 协议)192.168.1.49/repo.git - 使用终端: git clone --bare (http 协议)192.168.1.49/repo.git
终端说:
正在克隆到裸存储库 repo.git... 致命:(http协议)192.168.1.49/repo.git/info/refs?service=git-upload-pack not found:你在服务器上运行了 git update-server-info 吗?
我想可能是权限问题。我需要如何管理 /var/www 中的权限?
编辑:已经修复,只是需要:
-将存储库放入 /var/www/repos/ 命名为 repo.git
- 使用 sudo chown -R www-data:www-data /var/www
更改 www 文件夹的权限 - 使用 sudo a2enmod dav_fs 启用 webdav
-config 文件到 /etc/apache2/conf.d 称为 git.conf
- 使用用户创建文件 sudo htpasswd -c /etc/apache2/passwd.git user
-重命名 pot-update 文件并使用 sudo mv /var/www/repos/repo.git/hooks/post-update.sample /var/www/repos/repo.git/hooks/post-update && sudo 使其可执行chmod a+x /var/www/repos/repo.git/hooks/post-update
-更新服务器并使用 sudo git update-server-info && sudo service apache2 restart 重启 apache
并且,要解决推送问题:
将文件 .git/config 编辑到您的存储库文件夹(客户端计算机)中,并将用户名和密码放在 url 上:
url = (http 协议)user:password@url/repos/repo.git
所以,现在我只需要为非用户设置只读即可。
【问题讨论】:
-
你为什么使用 sudo?
-
@AD7six 不知道,跟着网上教程...
-
这不是编程问题,所以跑题了。
-
如果您想通过 http 设置写访问 - 这与堆栈溢出无关。如果你使用 sudo - 你会遇到权限问题,因为一切都归 root 所有。 “通常”你会设置 http 为只读,匿名访问并使用 ssh 进行读/写 - 这也很容易设置
-
@AD7six 是的,我同意你的看法,但这是学校作业,所以我们需要使用 http 进行读/写。