如何设置公共 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 pull,而不是由一个用户拥有?