在git远程仓库上设置正确的组权限

时间:2010-10-15 22:53:59

标签: git

我的服务器上有一个git远程仓库。 每次我将本地分支推送到服务器时,〜/对象中的文件只具有我特定帐户的rw权限(不是我的组 - git)。 因此,当我的朋友对〜/对象中的那些文件进行推送时,他会收到权限许可错误。

Hes在同一组:git,但当然没有写权限(因为组git没有)

如何告诉git为这些文件提供整个git-group的正确权限?

感谢您的帮助。

_christoph

2 个答案:

答案 0 :(得分:16)

来自git-config(1)

  
      
  • core.sharedRepository
      当group(或true)时,存储库可以在组中的多个用户之间共享(确保所有文件和对象都是可写组的)。 [...]
  •   

在服务器上执行此操作:

  1. 配置存储库以进行组共享 这将有效地强制扩展umask以用于未来的Git操作。

    cd /path/to/repository.git
    git config core.sharedRepository group
    
  2. 清理现有权限:

    chgrp -R git .
    chmod -R g=u .
    
  3. 强制组所有者继承新条目(在BSD风格的系统上不需要,但在其他系统上通常需要):

    find . -type d -print0 | xargs -0 chmod g+s
    

答案 1 :(得分:1)

我建议您在连接到您运行的远程repo服务器时让开发人员使用通用用户帐户。您可以通过SSH密钥管理访问权限,因此您不必担心分发/共享密码等。

如果您想坚持使用单独的用户帐户,那么这个问题在serverfault得到了很好的回答: https://serverfault.com/questions/26954/how-do-i-share-a-git-repository-with-multiple-users-on-a-machine

您可能希望使用gitosis来运行您自己的repo: http://eagain.net/gitweb/?p=gitosis.git

良好的gitosis设置说明可在http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way获得。