我使用一个裸存储库,多个开发人员可以在其中推送。
如前所述,我使用sharedRepository = true告诉git授予一组用户推送的权限。
当我想添加推送器时,我只需将它们添加为所需的组作为次要组(sudo adduser the_pusher the_required_group
当devs推送时,我看到在objects目录中创建的文件是用良好的权限创建的,而不是良好的组。
例子:

$ ls -l repository/objects
...
drwxrwsr-x 2 pusher1 pusher1 4096 janv.  7 14:13 fa
drwxrwsr-x 2 pusher1 pusher1 4096 déc.  26 15:29 fc
drwxrwsr-x 2 pusher1 pusher1 4096 déc.  11 12:41 fd
...

如您所见,附加组是pusher1
如何使git将这些对象附加到the_required_group
更新
我在ssh上使用git。
每个开发人员都有自己的ssh帐户。

最佳答案

我的团队通过在存储库中的所有目录上设置s选项来解决这个问题,使用chmod将文件和目录设置为正确的用户/组,然后设置chown存储库中的所有内容。
chgrp使新文件具有其父目录的组。取自chmod g+s
如果使用-o nogrpid装入文件系统,并且设置的组id位为
在父目录上启用,则新文件的组将相同
作为父目录。
另请参见+sman 2 chown

08-16 05:51