gitosis与gitolite?

时间:2012-06-04 21:01:35

标签: git gitosis gitolite

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

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

5 个答案:

答案 0 :(得分:190)

  

我正在寻找安装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用户做事,setting up a git server的文档很短 - 因为它真的很容易做到。

总结:

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

使用专用git用户之间的区别是,如果您将git用户设置为使用git-shell,则不允许自己执行任何其他操作。但就充当git服务器而言,它与无安装解决方案相同

答案 1 :(得分:140)

主要区别在于,gitosis现已过时,并且不再积极维护。

Gitolite很多more feature complete,刚刚发布了third version

最有趣的功能是 Virtual Reference (VREF for short) ,它允许您根据需要声明尽可能多的update hook,这允许您通过以下方式限制推送:

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

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

  • 高级文件类型检测
    有时文件具有标准扩展名(不能是'gitignore'd'),但它实际上是自动生成的。这是抓住它的一种方法:
    - 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

  • 依旧......

答案 2 :(得分:15)

只是一个旁注。您也可以根据需要使用 Gerrit

Gerrit Code Review

首先,似乎Gerrit用于代码审查,但您实际上也可以将其用于管理用户并为其提供良好的定义权限。您可以绕过代码审核(通过访问控制),并将其用于管理项目和ssh-keys。 Gerrit有一个非常强大的访问控制机制:

Gerrit Access Controls

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

答案 3 :(得分:8)

对于更快更脏的解决方案,只需使用git daemon并进行点对点。 Here's an article关于做到这一点。

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

答案 4 :(得分:2)

我一直在搞乱git服务器使用LDAP访问,细粒度访问控制等......发现一个启示:使用Gitlab

  • git repositories
  • 细粒度访问(afaik gitlab引擎盖下使用gitolite)

如果您想要快速快速的安装方法:请使用bitnami installer