使用 Git 保留文件权限

新手上路,请多包涵

我想通过从我的 /var/www directory 创建一个 git repo 来对 我的 Web 服务器进行版本控制, 如我的 Web 服务器的版本控制中所述。我希望我能够将 web 内容从我们的开发服务器推送到 github,将其拉到我们的生产服务器,然后在池中度过余下的一天。

显然,我的计划中的一个问题是 Git 不会尊重文件权限(我没有尝试过,只是现在才读到它。)我想这是有道理的,因为不同的盒子可能有不同的用户/组设置。但是如果我想强制传播权限,知道我的服务器配置相同,我有什么选择吗?或者有没有更简单的方法来处理我正在尝试做的事情?

原文由 Yarin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

git-cache-meta 在 SO 问题“ git - 如何恢复文件权限 git 认为文件应该是? ”(和 git FAQ )是更直接的方法。

这个想法是将文件和目录的权限存储在 .git_cache_meta 文件中。

它是一个单独的文件,没有直接在 Git 存储库中进行版本控制。

这就是为什么它的用法是:

 $ git bundle create mybundle.bdl master; git-cache-meta --store
$ scp mybundle.bdl .git_cache_meta machine2:
#then on machine2:
$ git init; git pull mybundle.bdl master; git-cache-meta --apply

那么你:

  • 捆绑您的存储库 并保存关联的文件权限。
  • 将这两个文件复制到远程服务器上
  • 在那里恢复 repo,并应用权限

原文由 VonC 发布,翻译遵循 CC BY-SA 3.0 许可协议

Git 是为软件开发而创建的版本控制系统,因此从整套模式和权限中,它只存储可执行位(对于普通文件)和符号链接位。如果要存储完整权限,则需要第三方工具,例如 git-cache-meta由 VonC 提到)或 Metastore (由 etckeeper 使用)。或者您可以使用 IsiSetup ,IIRC 使用 git 作为后端。

请参阅 Git Wiki 上的 接口、前端和工具 页面。

原文由 Jakub Narębski 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题