Answers:
我正在寻找安装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服务器的文档很简短-因为它确实很容易做到。
综上所述:
.ssh/authorized_keys
文件中git-shell
使用专用的git用户和不使用专用的git用户之间的唯一区别是,如果您将git用户设置为使用git-shell
它,它将不允许自己执行任何其他操作。在充当git服务器方面,它与免安装解决方案相同
git push -u origin master
可以使用git push
。我更喜欢gito *,因为我认为没有人可以访问回购协议,而不必关心远程系统上的绝对路径。
/home/git/
URL中以访问项目,则@ThiefMaster会对您的意思大加猜测git@server:project.git
。
主要区别在于,现在已经不再使用gitosis,并且不再积极地对其进行维护。
它最有趣的功能是虚拟参考(Virtual Reference,简称VREF),它允许您声明任意数量的更新挂钩,从而可以通过以下方式限制推送:
目录/文件名:
假设您不希望初级开发人员将更改推送到Makefile,因为它非常复杂:
- VREF/NAME/Makefile = @junior-devs
新文件数:
假设您不希望初级开发人员每次提交推送9个以上的文件,因为您希望他们进行小的提交:
- VREF/COUNT/9/NEWFILES = @junior-devs
高级文件类型检测:
有时文件具有标准扩展名(不能使用'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用于代码审查,但实际上您也可以将其用于管理用户并为他们提供良好的定义权限。您可以绕过代码审查(通过访问控制),而仅将其用于管理项目和ssh键。Gerrit具有非常强大的访问控制机制:
您可以限制推送任何分支,标签或您可以想象的在访问控制文档中定义的任何内容。
对于更快,更脏的解决方案,只需使用git daemon并进行对等。这是有关执行此操作的文章。
编辑:我知道这不能严格回答OP的问题。我将其放在这里的主要对象是像我这样的人,他们在寻找一种卑鄙而肮脏的方式共享代码直到建立企业github帐户之前遇到了这种情况。
我一直在弄乱一段时间,以使git服务器可以使用LDAP访问,细粒度的访问控制等。发现一个启示:使用Gitlab:
如果您想使用快速安装方法,请使用bitnami安装程序