你如何使用拉取和推送来设置 cgit



我正在尝试设置一个cgit实例,您可以从中推送或拉取http。但是,我可以通过 cgit 通过 http 浏览我的存储库,但是当我尝试推送到此存储库时,出现错误:

致命,/info/refs 无效,这是一个 git 存储库吗?

此路径存在于服务器上,这是一个空文件。我创建了一个更新后钩子,它会自动执行 git update-server-info(来自存储库的 post-update.example)。但是当我尝试通过http查看/info/refs文件时,cgit有一个公告,这是一个空的存储库。

我该怎么做才能通过 http 访问此文件,以便我可以使用 cgit 提供给我的 url 进行推送或拉取?

我在共享托管服务提供商上有我的存储库,所以我无法访问 apache.conf,而只能访问 .htaccess 文件......

据我所知,cgit 不支持推送到 Git 存储库(通过查看其功能列表)。

您可能需要设置类似 git-http-backend 的东西才能推送。 git-http-backend手册页包含 Apache 2.x 的示例配置,用于使用经过身份验证的写入进行匿名读取,以及用于经过身份验证的读取和写入。

如果您想要一个比git-http-backend功能更丰富的后端,我会推荐 gitolite。它有一些非常好的功能:

  • 在服务器上使用单个 unix 用户("真实"用户)
  • 为许多吉石用户提供访问权限:
    • 他们不是"真正的"用户
    • 他们没有获得外壳访问权限
  • 控制对许多 git 存储库的访问:
    • 在存储库级别控制读取访问权限
    • 在分支/标记
    • /文件/目录级别控制写入访问权限,包括谁可以倒带、创建和删除分支/标记
  • 可以在没有root访问权限的情况下安装,假设已经安装了git和perl。
  • 身份验证最常使用 sshd 完成,但如果您愿意,也可以使用 http(这可能需要 root 访问权限)
  • 将所有配置存储在管理员 git 存储库中

这只是一些更重要的功能。此外,使用您自己的脚本可以轻松扩展其行为。

最新更新