我正在寻找安装git服务器与我的团队共享项目的方法。我不想为每个需要git访问权限的开发人员在服务器上创建具有SSH访问权限的用户帐户。
似乎有两个并发解决方案可以解决此问题:gitosis和gitolite。 br />我找不到这两种解决方案之间的任何比较。它们之间的主要区别是什么?还有其他类似的解决方案吗?

#1 楼


我正在寻找安装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用户的.ssh/authorized_keys文件中
将git用户的外壳更改为git-shell

在服务器上创建存储库
开始git pull / pushing to git@yourserver.com

使用专用git用户和不使用专用git用户之间的唯一区别是,如果将git用户设置为使用q431207 9q它不会允许自己做任何其他事情。但就充当git服务器而言,它与免安装解决方案相同

评论


在安装了GitLab + Gitolite的野兽之后,如果您不需要对项目等进行精细控制,则可以采用这种方法。

–安德鲁(Andrew T Finnell)
2012年6月4日在21:21



感谢您的回答!实际上,当我说我不想为每个帐户创建用户帐户时,我还应该提到我不希望我的git用户通过ssh访问服务器外壳。通过您的解决方案,我认为他们将可以通过“ git”用户访问shell,对吗?

– Greydet
2012年6月5日17:44

@wsams:git push -u原始主机,可以在其后使用git push。我更喜欢gito *,因为在我看来,没有人访问回购协议应该关心远程系统上的绝对路径。

– ThiefMaster
2012年9月7日上午10:50

如果将repos放在/ home / git /中,@ ThiefMaster会对您的意思大加猜测,访问项目的URL是git @ server:project.git。

– AD7six
2012年9月7日在11:44



@wsams阅读答案的这一部分“将git用户的shell更改为git-shell”。

– fabspro
13年5月18日在11:25

#2 楼

主要区别在于,gitosis现在已过时,不再得到积极维护。是虚拟引用(简称VREF),它允许您声明所需的更新挂钩,从而可以通过以下方式限制推送:


dir /文件名:
说您不希望初级开发人员将更改推送到Makefile中,因为它很复杂:- VREF/NAME/Makefile = @junior-devs
新文件数: ,因为您希望它们进行较小的提交:这是一种捕获方法:- 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
等等...


评论


我已经使用Gitolite超过3年了。从来没有任何问题。我的生产和登台服务器具有对仓库的只读访问权限。与其他开发团队共享项目很容易。如果您已经知道unix和git,那么设置起来也很容易:)

–有能力
13年5月29日在23:54

Gitolite文档包括对替代品的比较:gitolite.com/gitolite/gitolite.html#alt

– Quinn Comendant
2015年4月12日在2:26

#3 楼

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

Gerrit代码审查

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

Gerrit访问控制

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

#4 楼

对于更快,更脏的解决方案,只需使用git daemon并进行对等。这是一篇有关执行此操作的文章。我将其放在这里的主要对象是像我这样的人,他们在寻找一种卑鄙而肮脏的方式来共享代码,直到建立了企业github帐户为止。

#5 楼

我一直在搞乱一段时间,以使git服务器可以使用LDAP访问,细粒度的访问控制等。发现一个启示:使用Gitlab: >细粒度的访问(afaik gitlab在引擎盖下使用gitolite)

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

评论


是的,但是GitLab(带有gitlab-shell)丢失了您可以使用Gitolite轻松设置的所有VREF挂钩。很多人都希望他们回来:github.com/gitlabhq/gitlab-shell/issues/14和github.com/gitlabhq/gitlab-shell/pull/85

–VonC
2014年2月12日在16:41