gitosis vs gitolite?

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

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

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

你可以使用git。

要有一个git服务器,你需要在远程服务器上唯一的东西就是git。 如果你不需要细粒度的权限(只与你的团队共享,这表示这是一个可能性)或任何额外的function,你不需要gitolite,或类似的。

没有安装的解决scheme

如果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用户做一些事情, build立一个git服务器的文档是很短的 – 因为它确实很容易做到。

综上所述:

  • 安装git
  • 创build一个名为git的用户
  • 将你和你的团队的公钥添加到git用户的.ssh/authorized_keys文件中
  • 把git用户的shell git-shell
  • 在服务器上创build仓库
  • 开始git拉/推到git@yourserver.com

使用专门的git用户而不是,如果你设置git用户使用git-shell它不会允许自己做任何事情。 就充当git服务器而言,它与非安装解决scheme相同

主要的区别在于gitosis现在已经过时了,不再被主动维护了。

Gitolite function更完整 ,刚刚发布了第三个版本 。

它的最有趣的function是虚拟引用(VREF) ,它允许你声明尽可能多的更新钩子 ,允许你通过以下方式来限制推送:

  • 目录/文件名称
    假设您不希望初级开发人员将更改推向Makefile,因为它非常复杂:
    - VREF/NAME/Makefile = @junior-devs

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

  • 高级文件types检测
    有时文件有一个标准的扩展名(不能是'gitignore'),但它实际上是自动生成的。 这是一个方法来捕捉它:
    - 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的实现。

  • 等等…

只是一个旁注。 您也可以使用Gerrit来满足您的需求:

Gerrit代码审查

首先,Gerrit似乎用于代码审查,但实际上也可以用它来pipe理用户并给予他们良好的定义权限。 您可以绕过代码审查( 通过访问控制 ),并将其用于pipe理项目和ssh密钥。 Gerrit具有非常强大的访问控制机制:

Gerrit访问控制

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

对于更快更肮脏的解决scheme,只需使用git守护进程并进行点对点。 这里有一篇关于做这个的文章 。

编辑:我认识到这并不严格地回答OP的问题。 我把这里主要是为了像我这样的人,在寻找一种肮脏的方式来共享代码,直到企业github账户build立。

我已经搞乱了一段时间,以获得一个与LDAP访问,细粒度的访问控制等工作的git服务器…发现一个启示:使用Gitlab :

  • git存储库
  • 细粒度访问(afaik gitlab使用引擎盖下的gitolite)

如果你想要快速和快速的安装方法:使用bitnami安装程序