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?
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:
To, eg,
scripts/fix_permissions/
, then run it as a post-receive hook by simlinking it into.git/hooks/post-receive
on the server.