V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
gdb
V2EX  ›  git

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

  •  
  •   gdb · 2023-08-22 16:00:42 +08:00 · 1622 次点击
    这是一个创建于 492 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开发的人员越来越多,希望对 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 条回复    2023-08-23 10:44:25 +08:00
    duke807
        1
    duke807  
       2023-08-22 16:15:17 +08:00 via Android
    gerrit 看一下
    v2kid
        2
    v2kid  
       2023-08-22 16:34:20 +08:00
    gitea 试试。
    dobelee
        3
    dobelee  
       2023-08-22 16:37:27 +08:00
    gitolite 能配置分支权限。
    vicalloy
        4
    vicalloy  
       2023-08-22 16:42:58 +08:00
    git 从原理上说不支持按照目录分配权限。
    如果你要安装目录分配权限,得用 submodules 控制。
    zjsxwc
        5
    zjsxwc  
       2023-08-22 16:45:47 +08:00
    偷懒的解决办法:使用 svn

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

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

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

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

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

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

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

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

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

    @Reficul 对的,你的理解是正确的,谢谢!我现在还没有看到哪个 git 的管理工具,能对“读”某个分支或者某个目录进行限制的。
    coderzhangsan
        14
    coderzhangsan  
       2023-08-23 09:20:18 +08:00   ❤️ 1
    既然 SVN 能满足需求,就用 SVN 吧,其他工具能不能实现,需要调研,弄不好也是瞎折腾;至于 SVN 担心用的人少,我觉得担心是多余的,说到底就是个版本管理工具,开发人员不了解可以学习,制定好基本操作规范流程,就可以了,也不是非要精通,况且很多人也是经历过 SVN 的时代,或多或少都有了解的。
    gegewu0927
        15
    gegewu0927  
       2023-08-23 09:20:32 +08:00
    https://github.com/PGYER/codefever 不知道满足不,可以看看其中的功能。
    cslive
        16
    cslive  
       2023-08-23 09:30:46 +08:00
    换 svn 然后用 git 操作一样的,git svn clone url
    vibbow
        17
    vibbow  
       2023-08-23 10:39:11 +08:00
    bitbucket server
    gdb
        18
    gdb  
    OP
       2023-08-23 10:44:25 +08:00
    @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 里面是做不到的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5726 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:50 · PVG 09:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.