我在使用 git 存储库时遇到了一些问题,该存储库的某些文件处于只读模式 (chmod 0440)。
有时,其中一个文件会在另一个分支上被修改;当您尝试 checkout 该分支时,git 无法使用以下命令更新该文件
警告:无法取消链接路径/到/文件:权限被拒绝
问题是这些文件需要处于只读模式,因为当这些文件可写时,这些文件之外使用的框架会抛出严重的警告消息,甚至更严重的问题是,每次我们在我们的系统中(重新)安装框架时持续集成过程中,框架会将这些文件更新为只读模式。
我尝试使用 git hooks 在 checkout 任何文件/分支之前自动 chmod 这些文件到 0664,然后将它们 chmod 回 0440,但我不确定这样的钩子(Hook)是否存在。
一个不需要的解决方案是每次我知道这些文件可以用 git 更改时,我自己将这些文件 chmod 到 0664,然后将它们 chmod 回 0440 以避免在 prod 环境中推送可写文件,但这肯定会导致失败。
另一个解决方案是以 0664 模式提交它们,并更新我们的持续集成流程,以便在(重新)安装框架后将这些文件重新 chmod 为 0664,并完全忽略警告;同时将 prod 环境的 chmod 保持为 0440。
你们觉得这个问题怎么样?我可以解决这个问题的最佳解决方案是什么?
最佳答案
听起来您正在尝试使用 Git 作为部署工具。
Git 并不是作为部署工具。最重要的原因之一是,它不跟踪除用户可执行权限之外的权限。如果一个文件是只读的,Git 当然不能修改它,因为它是只读的。
也许你应该阅读http://gitolite.com/deploy.html获取有关如何围绕 Git 构建部署工具的一些提示。
关于Git 无法 checkout 具有只读权限的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591128/