寻找一种可以本地 Linux 下安装的 git 服务器,可以设置不同的用户有不同的分支权限,以及不同目录的访问权限

262 天前
 gdb

开发的人员越来越多,希望对 git 仓库进行管理和权限设置。

比如某些分支,只能由特殊的一些用户访问,不是所有人都能访问到,这里是读和写的权限都需要考虑。

另外,比如某些 git 的目录下,最好也能做到权限控制,比如某些目录针对某些用户是不能读的。

我不知道是否有这样的功能,貌似网上搜索了一下,微软公司有一个网页:Set Git branch security and permissions - Azure Repos | Microsoft Learn — https://learn.microsoft.com/en-us/azure/devops/repos/git/branch-permissions?view=azure-devops

但是感觉这个是云服务,而我需要的是一个本地能装的代码版本管理系统。

我也看了一下,似乎 svn 有不同的目录权限,但是 svn 是很老的东西,基本上现在所有人都在用 git 了。

请各位 v 友推荐一下是否有这样的 git 服务器软件,谢谢!

1389 次点击
所在节点    git
18 条回复
duke807
261 天前
gerrit 看一下
v2kid
261 天前
gitea 试试。
dobelee
261 天前
gitolite 能配置分支权限。
vicalloy
261 天前
git 从原理上说不支持按照目录分配权限。
如果你要安装目录分配权限,得用 submodules 控制。
zjsxwc
261 天前
偷懒的解决办法:使用 svn

不偷懒的办法:使用 git submodule
https://git-scm.com/book/en/v2/Git-Tools-Submodules
```
比如说,如果您的团队 α 和 β 应该有单独的代码库,但其他一些项目同时使用它们,请将 α 和 β 的代码库放入单独的存储库中,并且使用它们的项目也是一个单独的存储库,该存储库使用子模块来引用这两个项目 这取决于。

子模块的一个属性是子模块引用始终引用相应存储库中的精确提交,因此第三个(依赖)存储库中的每次提交都将引用 α 和 β 代码库的精确状态,从而在过去的任何时间点提供可重现的构建。
```
ashuai
261 天前
简单点 gitlab
NessajCN
261 天前
这些都是 git 基本功能,根本不用什么额外软件
git 是分布式工具,软件不分服务端客户端,只要你能被 ssh 进来就能直接用 git 全部实现你要的功能
https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
gdb
261 天前
@dobelee @ashuai @v2kid 我感觉这些工具有分支权限设置,但是这些设置权限只是设置“写权限”,并不能屏蔽“读权限”。也不能屏蔽针对目录的“读权限”。

@duke807 看了一下 gerrit ,似乎不行。

@zjsxwc submodule 也挺烦人,多了之后相互依赖,也不是很好弄。

谢谢各位的回复。
Reficul
261 天前
git 服务端的 hook 去做目录权限管理,其他配合 girret 应该可以吧。。。
Reficul
261 天前
BTW ,不让读特定目录应该做不到,Git 是分布式版本管理系统,一拉就得是完整的仓库。 不让写特定目录配合 Hook 应该可以的,机器人自动 -1.
cheneydog
261 天前
gogs
someday3
261 天前
你这个需求不对,是伪需求。

如果你需要控制某些分支一些人连读都不能读,那么他已经不能算是这个项目的分支了。虽然逻辑上可能是这个项目的一个子分支,但是要求上已经是一个独立的项目了,比如一些政府类的定制,那升级为单独的仓库来控制。

不然的话像你说的,分支会很乱。

git 是产品上的抽象,产品的分支就应该是所有的分支有相同的权限。每个分支拥有单独的读写控制,那就是一个产品下有 N 个产品,这在逻辑上是混乱的。这样的产品应该抽象为一个组,一个组有一个基线仓库,就是产品的公版。另外一些是组内的另一些仓库,单独控制权限。
gdb
261 天前
@someday3 谢谢你的建议,我也感觉应该用不同的项目仓库比较好。

@cheneydog 研究了一下 gogs 的文档,似乎也没有对“读权限”的限制,谢谢!

@Reficul 对的,你的理解是正确的,谢谢!我现在还没有看到哪个 git 的管理工具,能对“读”某个分支或者某个目录进行限制的。
coderzhangsan
261 天前
既然 SVN 能满足需求,就用 SVN 吧,其他工具能不能实现,需要调研,弄不好也是瞎折腾;至于 SVN 担心用的人少,我觉得担心是多余的,说到底就是个版本管理工具,开发人员不了解可以学习,制定好基本操作规范流程,就可以了,也不是非要精通,况且很多人也是经历过 SVN 的时代,或多或少都有了解的。
gegewu0927
261 天前
https://github.com/PGYER/codefever 不知道满足不,可以看看其中的功能。
cslive
261 天前
换 svn 然后用 git 操作一样的,git svn clone url
vibbow
261 天前
bitbucket server
gdb
261 天前
@vibbow 你这个服务器应该不行吧,我网上查了一下,见一个回答:BitBucket File and folder level permissions within same repository - Stack Overflow — https://stackoverflow.com/questions/39976046/bitbucket-file-and-folder-level-permissions-within-same-repository 总而言之,在可以读取一个 git 的情况下,要对 git 中的某些目录或者某些分支进行读的功能限制,估计在目前 git 里面是做不到的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX