git上的每个目录权限

ui7jx7zq  于 2023-06-20  发布在  Git
关注(0)|答案(3)|浏览(256)

我们正在考虑将我们的VCS切换到git或subversion。我更喜欢切换到git,但subversion有一个我在git中看不到的好功能:每个目录的访问控制。
我们目前在cvs中有project 1,project 2仓库,有不同的权限。我们希望有一个单一的仓库,两个目录project 1和project 2具有不同的权限。它在git上是否和在svn上一样可行?
我知道子模块可能可以实现这一点,但我们的目标是能够在project 1和project 2中进行一次提交。
我们主要有IP问题,并希望确保有些人不能读取(不只是推)一些目录。那么,git是否准备好迎接挑战,或者我必须使用git-svn?
谢谢

plicqrtu

plicqrtu1#

它可以通过gitolite管理的中央存储库进行访问(推/拉)。
看看它的特点。
如果你将其与子模块(你知道的)结合起来,你将只管理每个repo或每个分支的访问,并且仍然提交project 1和project 2(在子repo的情况下有两次提交:见此问题)
如果你坚持使用一个repo(即使你必须使用一组数据,这些数据可以随着它们自己的生命周期而发展,这应该使它们成为模块的良好候选者),那么gitolite的功能包括:

基于文件/目录名称的限制

除了基于分支名称的限制之外,gitolite还允许您限制哪些文件或目录可以参与正在推送的更改
dpk在注解中提到,最后一个特性(文件/目录名限制)在Gitolite的**conf/example.conf**文件中有详细说明。

bkhjykvo

bkhjykvo2#

试试nigithttps://github.com/kingsimba/nigit。我的团队(超过30人)已经使用它多年了。
它可以将相关的项目作为一个整体来管理,通过将它们拉到一起,一起切换分支等。每个项目都有自己的协作者和权限。
如果某人没有权限访问某些源代码(子项目),他们可以使用编译后的二进制文件。

$ nigit status
=== nigit ===
+ some_new_file
- some_deleted_file
M some_modified_file
? some_untracked_file
=== ncgeo ===
- other_deleted_file
? other_untracked_file
kse8i1jr

kse8i1jr3#

我尝试了一些Git hooks + partial clone + HTTP reverse proxy的方法,让Github对每个文件夹都有读取权限,这还远远不够完美,但这是一个可能的方向,可以找到here

相关问题