寻找一种可以本地 Linux 下安装的 git 服务器,可以设置不同的用户有不同的分支权限,以及不同目录的访问权限 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
gdb
V2EX    git

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

  •  
  •   gdb Aug 22, 2023 2294 views
    This topic created in 992 days ago, the information mentioned may be changed or developed.

    开发的人员越来越多,希望对 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 服务器软件,谢谢!

    18 replies    2023-08-23 10:44:25 +08:00
    duke807
        1
    duke807  
       Aug 22, 2023 via Android
    gerrit 看一下
    v2kid
        2
    v2kid  
       Aug 22, 2023
    gitea 试试。
    dobelee
        3
    dobelee  
       Aug 22, 2023
    gitolite 能配置分支权限。
    vicalloy
        4
    vicalloy  
       Aug 22, 2023
    git 从原理上说不支持按照目录分配权限。
    如果你要安装目录分配权限,得用 submodules 控制。
    zjsxwc
        5
    zjsxwc  
       Aug 22, 2023
    偷懒的解决办法:使用 svn

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

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

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

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

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

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

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

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

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

    @Reficul 对的,你的理解是正确的,谢谢!我现在还没有看到哪个 git 的管理工具,能对“读”某个分支或者某个目录进行限制的。
    coderzhangsan
        14
    coderzhangsan  
       Aug 23, 2023   1
    既然 SVN 能满足需求,就用 SVN 吧,其他工具能不能实现,需要调研,弄不好也是瞎折腾;至于 SVN 担心用的人少,我觉得担心是多余的,说到底就是个版本管理工具,开发人员不了解可以学习,制定好基本操作规范流程,就可以了,也不是非要精通,况且很多人也是经历过 SVN 的时代,或多或少都有了解的。
    gegewu0927
        15
    gegewu0927  
       Aug 23, 2023
    https://github.com/PGYER/codefever 不知道满足不,可以看看其中的功能。
    cslive
        16
    cslive  
       Aug 23, 2023
    换 svn 然后用 git 操作一样的,git svn clone url
    vibbow
        17
    vibbow  
       Aug 23, 2023
    bitbucket server
    gdb
        18
    gdb  
    OP
       Aug 23, 2023
    @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 里面是做不到的。
    About     Help     Advertise     Blog     API     FAQ     Solana     2968 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 63ms UTC 00:27 PVG 08:27 LAX 17:27 JFK 20:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86