gitosis与gitolite?

gre*_*det 138 git gitosis gitolite

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

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

AD7*_*six 191

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

你可以使用git.

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

无安装解决方案

如果远程服务器上有git,您可以立即执行您所要求的操作,而无需执行任何操作

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare
Run Code Online (Sandbox Code Playgroud)

本地:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

设置git服务器很简单.

如果你想用专门的git用户做事,设置git服务器的文档很短 - 因为它真的很容易做到.

综上所述:

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

使用专用git用户与否之间的唯一区别是,如果你设置git用户使用git-shell它将不允许自己做任何其他事情.但就充当git服务器而言,它与无安装解决方案相同

  • 在安装了GitLab + Gitolite的野兽之后,如果你不需要对项目等进行精细控制,那么就可以了. (13认同)
  • @ThiefMaster粗略猜测你的意思,如果你把回购放在`/ home/git /`中,那个访问项目的url是`git @ server:project.git`. (8认同)
  • @wsams:`git push -u origin master`你可以在它之后使用`git push`.我更喜欢gito*因为在我看来,没有人访问回购应该关心它在远程系统上的绝对路径. (2认同)

Von*_*onC 140

主要的区别是,gitosis现在已经过时,并且不再积极维护.

Gitolite 功能更齐全,刚刚发布了第三个版本.

它最有趣的功能是虚拟引用(简称VREF),它允许您根据需要声明任意数量的更新挂钩,这允许您通过以下方式限制推送:

  • 目录/文件名:
    假设您不希望初级开发人员将更改推送到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实施.

  • 等等...

  • Gitolite非常好用,非常易于使用和设置. (4认同)
  • 我已经使用Gitolite超过3年了.从来没有遇到任何问题.我的生产和登台服务器具有只需访问repos的需求.然后,与其他开发团队共享项目非常容易.如果你已经知道unix和git,它也很容易设置:) (3认同)
  • 谢谢你真的回答了这个问题! (3认同)

Fat*_*lan 15

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

Gerrit Code Review

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

Gerrit访问控制

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


Tim*_*ing 8

对于更快更脏的解决方案,只需使用git守护程序并进行点对点.这是一篇关于这样做的文章.

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