关节炎和关节炎?

我正在寻找安装一个 git 服务器与我的团队共享项目。我不想在服务器上为每个需要 git 访问权限的开发人员创建具有 SSH 访问权限的用户帐户。 似乎有两个并行的解决方案,涵盖这个问题: gitosis & gitolite。

我找不到两种解决方案之间的任何比较。它们之间的主要区别是什么?还有其他类似的解决方案吗?

77264 次浏览

主要的区别是,现在的 Gitosis 是过时的,不再积极维护了。

基托是多 更多功能完成,刚刚发布了它的 第三个版本

它最有趣的特性是 虚拟参考(简称 VREF),它允许你声明尽可能多的 更新钩子,它允许你通过以下方式限制推送:

  • Dir/file name :
    假设您不希望初级开发人员推动对 Makefile 的更改,因为它非常复杂:
    - VREF/NAME/Makefile = @junior-devs

  • 新文件数 :
    假设你不希望初级开发人员每次提交推送超过9个文件,因为你希望他们进行 很小提交:
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • 高级文件类型检测 :
    有时候一个文件有一个标准的扩展名(不能被忽略) ,但它实际上是自动生成的。这里有一个方法来抓住它:
    - VREF/FILETYPE/AUTOGENERATED = @all
    查看 src/VREF/FILETETYPE以查看检测机制

  • 查看作者电子邮件 :
    有些人希望确保“您只能推动自己的提交”。
    - VREF/EMAIL-CHECK = @all
    参见 src/VREF/EMAIL-CHECK

  • 返回文章页面投票承诺译者:
    对承诺进行表决的一个基本实现出人意料地简单:
    - VREF/EMAIL-CHECK = @all.
    # 2 votes required to push master, but trusted devs don't have this restriction
    # RW+ VREF/VOTES/2/master = @trusted-devs
    # - VREF/VOTES/2/master = @devs
    有关实现,请参见 src/VREF/VOTES

  • 诸如此类。

我正在寻找安装一个 git 服务器与我的团队共享项目。

可以使用 git 进行 只是

要拥有一个 git 服务器,远程服务器上唯一需要的就是 git。如果您不需要细粒度的权限(只与您的团队共享建议这是一种可能性)或任何额外的功能,您不需要 gitolite 或类似的。

非安装解决方案

如果 git 在远程服务器上可用,那么您可以马上执行所要求的操作,而不需要执行任何操作

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare

本地:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master

设置 git 服务器很容易。

如果您想使用一个专用的 git 用户完成工作,那么 建立一个 Git 服务器的文档很短——因为它实际上非常容易做到。

总之:

  • 安装 git
  • 创建一个名为 git 的用户
  • 将您和您的团队的公钥添加到 git 用户的 .ssh/authorized_keys文件中
  • 将 git 用户的 shell 更改为 git-shell
  • 在服务器上创建回购协议
  • 启动 git pull/push 到 git@yourserver.com

使用专用 git 用户和不使用 git 用户之间的 只有区别在于,如果将 git 用户设置为使用 git-shell,它将不允许自己执行任何其他操作。不过,就充当 git 服务器而言,它与不安装解决方案完全相同

这只是一个旁注。你也可以根据你的需要使用 Gerrit:

Gerrit 守则检讨

首先,Gerrit 似乎用于代码审查,但实际上您也可以使用它来管理用户,并给予他们良好的定义权限。您可以使用 搭桥手术代码检查(通过 访问控制) ,并仅用于管理项目和 ssh-key。Gerrit 有一个非常强大的访问控制机制:

Gerrit 访问控制

您可以限制推送访问控制文档中定义的任何分支、标记或任何您可以想象到的内容。

对于一个更快更脏的解决方案,只要使用 Git Daemon和点对点。

编辑: 我承认这并没有严格回答 OP 的问题。我把它放在这里主要是为了那些像我一样的人,他们在寻找一种下流肮脏的方式来共享代码时遇到了这个问题,直到企业 github 帐户建立起来。

我已经浪费了一段时间让 Git 服务器使用 LDAP 访问、细粒度访问控制等等。.发现一个启示: 使用 Gitlab:

  • Git 仓库
  • 细粒度访问(afaik gitlab 在引擎盖下使用 Gitolite)

如果你想要快速安装的方法: 使用 比特名安装程序