Git无法以只读权限签出文件

时间:2017-06-16 13:57:02

标签: git file-permissions readonly

我在使用git存储库时遇到了一些问题,这些存储库中有一些文件处于只读模式(chmod 0440)。

有时,其中一个文件会在另一个分支上被修改;当你试图检查那个分支时,git无法用a更新该文件 warning: unable to unlink path/to/the/file: Permission denied

问题是这些文件需要处于只读模式,因为当这些文件可写时,超出这些文件使用的框架会抛出大量警告消息,甚至更有问题,每次我们(重新)在我们的文件中安装框架在持续集成过程中,框架将这些文件更新为只读模式。

我试图在签出任何文件/分支之前使用git hooks自动将这些文件chmod到0664,然后将它们chmod回0440,但我不确定是否存在这样的钩子。

一个不受欢迎的解决方案是每次我知道他们可以使用git更改这些文件到0664,然后将它们chmod回0440以避免在prod环境中推送可写文件,但这会导致失败。

另一种解决方案是在0664模式下提交它们并更新我们的持续集成过程,以便在重新安装框架后将这些文件重新调整为0664并完全忽略警告;同时将chmod保持在0440以适应生产环境。

你们是怎么想到这个问题的,我可以解决它的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:2)

听起来您正在尝试使用Git作为部署工具。

Git不是一种部署工具。其中一个最重要的原因是,除了用户可执行的权限之外,它不会跟踪权限。如果文件是只读的,Git当然不能修改它,因为它是只读的。

也许您应该阅读http://gitolite.com/deploy.html以获得有关如何围绕Git构建部署工具的一些提示。