【问题标题】:Git cannot checkout files with readonly permissionsGit 无法签出具有只读权限的文件
【发布时间】:2017-11-19 08:12:41
【问题描述】:

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

有时,其中一个文件在另一个分支上被修改;当您尝试签出该分支时,git 无法使用 warning: unable to unlink path/to/the/file: Permission denied

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

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

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

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

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

【问题讨论】:

  • 但是....您希望如何覆盖只读文件?我不确定你期望 GIT 在这里做什么。使文件可写或不更新。在我看来,您的实际问题是因为当这些文件可写时,超出这些文件使用的框架会引发严重的警告消息。这似乎意味着您根本不应该将这些文件签入 GIT,当然也不应该更新它们

标签: git file-permissions readonly


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-06-13
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2012-10-26
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多