【问题标题】:Git Windows Multiple User - Group Permissions IssueGit Windows 多用户 - 组权限问题
【发布时间】:2017-05-02 18:00:40
【问题描述】:

我的客户端/服务器 git 配置存在问题,当有多个用户推送更改时,这会导致权限问题。我的用户收到错误消息:

远程:错误:将对象添加到存储库数据库的权限不足 ./objects

我的配置 git 存储库位于 NetApp 网络共享上。此网络共享安装在 Red Hat (RHEL) 6.4 Linux 服务器上。要创建存储库,用户登录到 RHEL 服务器,导航到他们想要存储库的位置(在已安装的共享上),然后运行命令:

git init --bare --shared=true repo.git

每个用户都在他们自己的 Windows 7/10 机器上本地工作,他们安装了 git windows,并且他们将前面提到的网络共享映射为驱动器。为了在他们的机器上获取存储库,他们打开 git-bash 并导航到他们想要在本地克隆存储库的位置。然后他们运行:

git clone Z:/git_repo_location/repo.git 

问题 用户能够将更改推送到存储库并且一切正常,直到他们尝试将更改推送到其他人之前编辑过的文件。这就是上面列出的错误出现的时候。

从 RHEL 查看权限,repo.git/objects 中的文件夹似乎设置为 755。 我相信正在发生的事情是当用户 A 拥有对象文件夹时,用户 B 无法将更改推送到受影响的文件。作为说明,我让所有用户在 git-bash 中将他们的 umask 更新为 0002(从默认的 0022)。此外,repo.git 存储库中的所有文件/文件夹都归组“DTG”所有,并且在此 repo 上工作的所有用户都属于该组。

尝试修复 我尝试了几种其他方式创建/初始化存储库,但每种方式都有相同的结果:

Create repo2.git
  git init --bare repo2.git
  cd repo2.git
  git config core.sharedRepository group
  chgrp -R dtg .
  chmod -R g+w . 
  chmod g+s `find . -type d`

Create repo3.git
  git init --bare repo3.git
  cd repo3.git      
  chgrp -R dtg .
  chmod -R g+w . 
  chmod g+s `find . -type d`
  git init --bare --shared=all 

Create repo4.git
  git init --bare repo4.git
  cd repo4.git 
  git config core.sharedRepository true     
  chgrp -R dtg .
  chmod -R g+swX . 
  chmod g+s `find . -type d`
  git init --bare --shared=all 

我还尝试让用户在设置本地 sharedRepository 配置时克隆存储库

git clone --config core.sharedRepository=true Z:/git_repo_location/repo.git

到目前为止,唯一解决此问题的方法是我登录 RHEL 机器并将组权限添加到对象文件夹:

chmod -R g+w repo.git/objects/

问题在于,这只是解决当前问题的临时创可贴。但是一旦有人再次推送更改,我就会留下缺少组写入权限的对象文件夹,并且下一个用户将再次被阻止。

任何帮助解决这个问题将不胜感激!!!另外,如果需要任何其他信息,请告诉我。上面尝试的大多数解决方案都来自另一个类似的问题How to configure an existing git repo to be shared by a UNIX group

【问题讨论】:

  • 除此之外是重复的:如果您还需要视障编码人员的帮助,请不要发布控制台消息的屏幕截图。而是使用 codequote 块。
  • 我尝试的大多数解决方案都源自您提供的可能重复的链接。也许我在页面上遗漏了一些东西,但我无法从该帖子中获得解决方案。另外我会注意截图推荐给以后的帖子!!
  • 如果是纯 Windows,我建议在存储库目录上设置权限。但只要涉及桑巴,我真的不知道它在这里是如何运作的。基本上,如果您看到 samba 自身 无法访问某些文件,那么在没有git 的情况下问题应该可以重现

标签: linux windows git samba


【解决方案1】:

这似乎是文件共享中间层的问题。 假设您实际上正在使用SAMBA 提供要从 w32 来宾挂载的网络共享,umask 和类似的设置对您没有多大帮助(因为权限实际上是由 samba 服务器和 w32 客户端处理的 -后者经常尝试制作非常严格的文件)

你可能会遇到这样的事情:

[git]
        comment = GIT repositories
        path = /path/to/git/repos
        read only = No
        force group = dtg
        create mask = 0664
        directory mask = 0775
        force directory mode = 0770
        force create mode = 0660

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2023-04-01
    • 2011-08-10
    • 2011-09-07
    • 2011-07-24
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多