如何设置公共 git 存储库?

Posted

技术标签:

【中文标题】如何设置公共 git 存储库?【英文标题】:How to setup public git repositories? 【发布时间】:2010-10-11 20:24:07 【问题描述】:

我最近尝试在 linux 机器上设置 git repo 并浪费了大约 10 个小时,完全没有结果。编译或类似的东西没有任何问题,这只是配置问题。 2 小时后,我得到了我需要做的一切:

    公开回购 网页界面 具有每个用户权限的推/拉(不绑定到 linux 帐户)

我能看到的关于 git 的所有内容都假设您只是在本地运行它,使用 github 或者已经设置好了所有内容。我要么没有寻找正确的关键字,要么没有或几乎没有关于该主题的信息。

我确实想尝试 git,但设置它是一种非常令人沮丧的体验。谁能指出这些术语中有用的东西?

谢谢!

【问题讨论】:

刚刚按要求添加了非 SSH 可能的解决方案。 您是否设法设置了一个 git 服务器?我确实尝试了 git-daemon 解决方案。它工作得很好。 【参考方案1】:

我相信(但我还没有尝试过)gitosis 是为了: 更新:2011 年,我实际上已经部署了 gitolite

让托管git 存储库更轻松、更安全。它 在一个用户帐户下管理多个存储库,使用 SSH 密钥来识别用户。 最终用户不需要服务器上的 shell 帐户,他们将与一个不允许他们运行任意命令的共享帐户对话。

我推荐的安装过程是从客户端帖子中完成的,以便在服务器上复制 gitolite 的完整安装:

(from-client method) install from the client to the server

记住:gitolite manages authorization, not authentication (SSH):它可以在没有 SSH 的情况下使用,但它的自然部署是通过 SSH 和forced command mechanism。 (就像 gitosis 一样,但功能更多)


gitosis 的旧参考:

这是一步一步的tutorial

然后是应用教程:Gitosis — making hosting multiple Git repositories manageable(适用于 Mac)或installing gitosis on Ubuntu

后跟:Adding users to our secure Git setup

完成于:Git subprojects(因为您的 gitosis 服务器管理所有这些不同的 git 存储库)


对于真正轻量级(cgi 服务器)公共 Git 存储库,您可以:

设置git server:git-daemon;它将侦听端口 9418。默认情况下,它将允许访问任何看起来像 git 目录并包含魔术文件 git-daemon-export-ok 的目录。将一些目录路径作为 git-daemon 参数传递将进一步限制对这些路径的导出。 您还可以将 git-daemon 作为 inetd 服务运行; export with http 将新创建的裸 git 仓库放在 web 服务器导出的目录中,并进行一些调整,为 web 客户端提供一些他们需要的额外信息

这是在Apache server 上执行此操作的方法。


2010 年的文章“8 ways to share your git repository”提到了授予对 Git 存储库的访问权限的所有可能性。

【讨论】:

教程错误地假设我想使用 SSH 并且我的客户端是基于 Linux 的。不幸的是,gitosis 和那个教程对我浪费时间试图让 git 工作做出了重大贡献:( 很抱歉听到这个消息。 “Linux box”:你用的是什么发行版?以及您在使用 gitosis 时遇到了哪些具体困难(您可以将所有这些数据添加到您的问题中,希望得到更好的答案)。与此同时,我明天将在我的 Ubuntu 设置上尝试 gitosis ;) 问题是所有这些都是基于 SSH 的。是否可以在 cgi 服务器上安装 git,比如 lighttpd? 应该提一下,gitosis 不再维护。现在人们正在使用 Gitolite。 github.com/sitaramc/gitolite @Sebastian:100% 同意。我实际上已经部署了(因为那个旧答案)gitolite ;)【参考方案2】:

你可以这样做

git instaweb

如果您安装了lighttpd。不过,这只是 Web GUI。

【讨论】:

以上是关于如何设置公共 git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 git 存储库上正确使用组文件权限?

在存储库中创建存储钩子

如何设置不同用户只能看到某些部分的 git 存储库?

如何在服务器上设置 git 存储库,并允许多个用户执行 git pull,而不是由一个用户拥有?

如何设置我的本地 Git 存储库以使用我刚刚创建的新个人访问令牌? [复制]

如何检查远程 git 存储库的配置?