我在使用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以适应生产环境。
你们是怎么想到这个问题的,我可以解决它的最佳解决方案是什么?
答案 0 :(得分:2)
听起来您正在尝试使用Git作为部署工具。
Git不是一种部署工具。其中一个最重要的原因是,除了用户可执行的权限之外,它不会跟踪权限。如果文件是只读的,Git当然不能修改它,因为它是只读的。
也许您应该阅读http://gitolite.com/deploy.html以获得有关如何围绕Git构建部署工具的一些提示。