3

我正在尝试设置一个 cgit 实例,您可以从中推送或拉取 http。但是,我可以通过 cgit 通过 http 浏览我的 repos,但是当我尝试推送到这个 repo 时,我收到一个错误:

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

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

我可以做些什么来通过 http 访问这个文件,所以我可以使用 cgit 提供给我的 url 推送或拉取?

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

4

2 回答 2

1

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

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

于 2012-10-14T22:35:27.613 回答
0

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

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

这只是一些更重要的功能。此外,使用您自己的脚本很容易扩展其行为。

于 2013-02-27T09:09:53.587 回答