我正在为多个开发人员在共享服务器上设置开发环境。我将拥有一个存储库,其中包含生产中使用的所有代码,以及团队中不同成员用于开发的许多其他代码。我希望生产回购是“仅限拉动”的。用户可以随时从中提取并在本地获取生产更改,但推送需要由生产管理员处理,或者至少需要密码。类似于:
[user@machine /devroot/myrepo]$ git pull $PRODUCTION master
From <location>
* branch master -> FETCH_HEAD
Already up-to-date
[user@machine /devroot/myrepo]$ git push $PRODUCTION master
error: user `user` is not authorized for this action
或
[user@machine /devroot/myrepo]$ git push $PRODUCTION master
HEAD @ `$PRODUCTION`-Please enter password:
我相信我可以用文件权限做到这一点,但这并不是一个优雅的解决方案。git内置了这样的东西吗?
7条答案
按热度按时间rt4zxlrg1#
我同意@duskuff..看看这个branching model。这将有助于你在没有Gerrit的情况下只获得拉力
4nkexdtk2#
git本身不包括任何权限管理。
您可以在管理git存储库的软件中实现更高一级的目标(如果您采用某种程度上集中的方法,但我想大多数公司都希望这样)。所以gitolite(http://gitolite.com/gitolite/)或gitlab可以做到这一点。
ecfsfe2w3#
一个简单的解决方案是users profile/etc/profile.d/git_restrictions。什:
然后,当您运行上面列出的任何其他内容时,会发生以下情况:
ffx8fchx4#
您可以使用单独的pull和push存储库URL。有关规则,请参阅文档,有关详细信息和讨论,请参阅this Q&A。
lf5gs5x25#
如果你想要复杂的存储库访问控制,你可能想看看Gerrit。它的主要焦点是代码审查(这也是完全值得的!),但它也作为副作用进行访问控制。
否则,如果您只需要一些非常简单的东西,那么文件权限是在单个计算机上处理这一问题的一种非常好的方式。只要用户不能写入包含存储库的目录中的文件,他们就不能推送到存储库。我看这一点都不雅观!
mbjcgjjk6#
一种更“成年人同意”的解决方案会奏效吗?
例如,在git中,您只设置了远程获取,并将远程推送到一个虚拟的不存在的URL,这样用户就不会意外地将
git push
发送到它。编辑:这与接受的in this question类似。
7tofc5zh7#
您可以使用gitolite或gitosis。然后,您可以创建用户列表,这些用户可以拉取、推送每个分支,也可以创建标签等。
我比吉托利更了解吉托利。该配置只是一个具有文件简单语法的git存储库。