【发布时间】:2016-05-10 02:17:10
【问题描述】:
我回顾了一堆有用的东西,但仍然不清楚如何做我需要的 (How do i change file ownership after git commit; How to keep git from changing file ownership; Making git push respect permissions?; Retaining file permissions with Git)
考虑到重要的时间已经过去,现在有一个简单、直接的解决方案吗?
你是做什么的?
尝试:
- Windows 开发环境 (XAMPP) 中的代码/测试
- 创建/管理不同的代码版本 (GIT)
- 将代码版本推送到远程仓库 ... 在 WAMP 服务器 (GIT) 上
- 将不同版本从 repo 签出到 dev 和/或 live 环境 (GIT)
到目前为止,如此明显 - GIT 的核心用例,几乎每个人都需要这样做?
但复杂性:
- 为了在实时环境中实际运行(这是重点),文件和权限需要正确
- 代码分布在 htdocs(主站点)、符号链接目录(最终用户可访问的内容,如图形等)和非用户可访问的源代码(位于 www 根目录之上)
- 这些不同的区域需要不同的用户所有权 -> 不同的权限
问题:由所有引用的问题以一种或另一种形式确定:
- Git 用运行 git 命令的用户组的 owner:group 覆盖文件所有权,并弄乱了实际运行应用程序所需的权限
理想的解决方案:
- 了解/维护目标环境所需的所有权设置和权限的工具,例如逐个目录:目录 A 中的文件应该有 ownerA、groupB 和权限 xyzxyzxyz 并且能够在 git 搞砸之后重新应用它们
目前考虑:
选项 1:允许此操作的 in-Git 功能或标志设置。
- 否:'git 不是部署工具'
选项 2:使用 git-cache-meta 存储文件设置,然后再次应用文件设置。
- 否:文件来自没有 Unix 类型权限的 Windows 开发环境,因此无法处理传入权限
选项 3:使用(极少文档且有效地仅限专家)元存储
- 否:据我所知,与选项 2 相同的问题
选项 4:查找、研究和试验一整套额外的工具(例如 Deployer、Gitolite),这些工具似乎旨在做一系列其他事情,可能会或可能不会做我正在寻找的事情
- 也许:但是,如果是这样:哪一个可以做到这一点?你用什么?什么是容易/简单的实现?
选项 5:在相关目录上设置组 ID 以强制“组”所有权
- 否:这对“所有者”或权限没有帮助
【问题讨论】:
-
为什么没有一个带有“部署”目标的 makefile,并在路径上的其他地方有 repo。
-
@Ignacio 可能,或者我想的任何自动化 shell 脚本......可能作为接收后挂钩更好。我真的希望有一条比编写脚本来处理它更简单的路线。
标签: linux git file permissions