如何在Git中保留文件权限?

8

我遇到了一个问题,花费了很长时间去寻找解决方案,但仍然没有得到答案。

我的问题是:当我试图通过git将我的网站部署到Django托管时,出现了“DatabaseError:尝试写入只读数据库”的错误。

看起来像是git会改变我的文件权限,从777变为755。但是,每当我提交我的项目时,这种变化就会持续存在。然而,我仍然需要向我的数据库(sqlite数据库)中写入一些内容。

是否有人有建议来配置我的git以保留每次提交的权限模式?

1个回答

11

简单来说,你做不到。

更详细地说,有像etckeeper这样的项目可以自动完成,或者你可以编写一个小挂钩脚本来修复权限(这可能是我会选择的方法)。

例如,如果你提交了这个:

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

将脚本(例如:scripts/fix_permissions/)放置在服务器上的 .git/hooks/post-receive 目录下,并通过符号链接将其作为 post-receive 钩子运行。


请注意,如果您应该使用 post-receive 钩子来更新服务器正在运行的文件,因为直接从 Git 存储库在服务器上运行某些东西通常是一个坏主意。 - Amber
非常正确。我喜欢将我的钩子保留在仓库中,这样它们就可以与其他所有内容一起进行版本控制,但这是因为我在小型项目上工作,所有开发人员都有服务器的根访问权限...但这确实会打开一个潜在的安全漏洞。 - David Wolever

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接