How to keep git from changing file ownership

2020-02-03 16:24发布

问题:

I have been noticing that when I pull from my github repo on a development server(Red Hat) the ownership of the files change after the pull is completed. The .git file used to be owned by me but then I noticed that it would write files as me and I need it to write files as a different user. So i changed the ownership of the .git directory.

I stumbled on to git config core.filemode which was true. I since have set to it false. I have not seen a difference after setting this to false. What should I do to keep my files ownership from changing.

This doesn't happen to me locally.

回答1:

If it suffices to preserve the group, you can set the setgid flag on the directories. See http://en.wikipedia.org/wiki/Setuid

Setting the setgid permission on a directory ("chmod g+s") causes new files and subdirectories created within it to inherit its group ID, rather than the primary group ID of the user who created the file (the owner ID is never affected, only the group ID). Newly created subdirectories inherit the setgid bit. Thus, this enables a shared workspace for a group without the inconvenience of requiring group members to explicitly change their current group before creating new files or directories. Note that setting the setgid permission on a directory only affects the group ID of new files and subdirectories created after the setgid bit is set, and is not applied to existing entities. Setting the setgid bit on existing subdirectories must be done manually, with a command such as the following:

[root@foo]# find /path/to/directory -type d -exec chmod g+s '{}' \;



回答2:

Git isn't a deployment server. It writes files as whoever's writing the files, that would be you. If you need permissions and ownership set, you could cook up a post-checkout hook and have it read a config file or something to decide what to do next.