How to preserve the file permission in git?

2019-02-05 02:30发布

问题:

I encountered a problem which took me a long time to find a solution and still fail to get one.

The problem I had is 'DatabaseError: 'attempt to write a readonly database' when I tried to deploy my website through git to a Django hosting.

It seems like git will change the permission of my files, from 777 to 755. But whenever I commit my project, this change will persist. However, I still need to write something into my database (sqlite database).

Does anyone have a suggestion to configure my git to preserve the permission mode at each commit?

回答1:

In short, you can't.

In longer, there are projects like etckeeper which can do it automatically, or you can write a small hook script which will fix up the permissions (which is probably how I'd do it).

For example, if you commit something this:

#!/bin/sh
chmod -R XXX file_or_directory/

To, eg, scripts/fix_permissions/, then run it as a post-receive hook by simlinking it into .git/hooks/post-receive on the server.