代码之家  ›  专栏  ›  技术社区  ›  Steve Folly

如何将git存储库设置为只读?

  •  64
  • Steve Folly  · 技术社区  · 16 年前

    我有一些通过SSH远程访问的git存储库,我想将其中一些设置为只读,以防止更多的推送。有些人有指向这些存储库的遥控器。

    --shared=group ,那么将所有文件的文件权限设置为660是否足以允许SSH访问,但不允许写入?还是有更简单的方法?

    10 回复  |  直到 16 年前
        1
  •  51
  •   Community Mohan Dere    5 年前

    • 如果你的每个用户都有一个shell帐户(可能有限),并且他们每个人都通过自己的帐户访问git存储库,你可以使用 目录

    • git-receive-pack

    • 你可以使用 update pre-receive update-paranoid contrib/hooks 在git源代码中。

    • ,比如 Gitosis Gitolite (Perl)。

    • git daemon git:// 而不是通过SSH协议访问。

      url.<base>.insteadOf


    另见第4章。 " Git on the Server “的 Pro Git Scott Chacon的书(CC-by-NC-SA授权)。

        2
  •  13
  •   Xavier Rubio Jansana    7 年前

    A. pre-receive

    假设你在消息中添加了一些有意义的信息,它也减少了沮丧的用户询问他们为什么不能推送的次数:

    #!/bin/bash
    echo "=================================================="
    echo "This repository is no longer available for pushes."
    echo "Please visit blah blah yadda yadda ...."
    echo "=================================================="
    exit 1
    

        3
  •  8
  •   Pat Notz    16 年前
    chmod -R a-w /path/to/repo.git
    
        4
  •  3
  •   jheddings    16 年前

    由于git主要依赖于文件系统进行访问控制,因此这是可行的。请注意,在您的权限中,世界无法访问该文件,但用户和组具有读/写权限。如果你想让世界可读,你的权限应该是 0444 .

    0664 用户在哪里 nobody gitdevs .然后,只有人在 gitdevs 组将有能力向回购写入,但世界可以从中读取。

    Here is a link 它涵盖了共享您的回购的各种方式,并涵盖了专业人士的回购;缺点和访问控制功能。

        5
  •  3
  •   Per Lundberg Kartik Soneji    7 年前

    this comment :

    1. hooks/pre-receive 包含以下内容的文件:

      #!/bin/sh
      
      echo "Closed for all pushes" ; exit 1
      

    这样,所有试图向此仓库推送更改的用户都将收到上述消息,推送将被拒绝。

        6
  •  1
  •   Makis    16 年前

    如果你也需要访问控制,请查看 gitosis

        7
  •  0
  •   Ikke    16 年前

        8
  •  0
  •   keypress    9 年前

    最近,我使用了限制对路径“/report.git/git-receive-pack”的访问,以实现存储库对某些用户是可读写的,对另一些用户是只读的。在httpd配置中,它看起来像这样:

        <Location /repo.git/>
                Require group developers developers-ro
        </Location>
    
        <Location /repo.git/git-receive-pack>
                Require group developers
        </Location>
    
        9
  •  0
  •   Nicolas    7 年前

    • 打开GitLab Web界面,转到要设置为只读的存储库
    • 设置>仓库
    • 允许推
    • 如果主分支已经受到保护,您可以在下面的列表中设置这些值
    推荐文章