linux - 从 GIT 存储库中提取时如何确保 Linux 文件所有权正确

标签 linux git file permissions

我已经回顾了一堆有用的东西,但仍然不清楚如何做我需要的 ( 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 中的不同版本 checkin 开发和/或实时环境 (GIT)

到目前为止,如此明显 - GIT 的核心用例,几乎每个人都需要这样做?

但复杂性:
- 为了在实时环境中实际运行(这很重要)文件和权限需要正确
- 代码分布在 htdocs(主站点)、符号链接(symbolic link)目录(最终用户可访问的内容,如图形等)和非用户可访问的源代码(位于 www 根目录之上)
- 这些不同的区域需要不同的用户所有权 -> 不同的权限

问题:所有引用问题以一种或另一种形式标识:
- Git 用所有者覆盖文件所有权:运行 git 命令的用户组,并弄乱了实际运行应用程序所需的权限

理想的解决方案:
- 一种了解/维护目标环境需要哪些所有权设置和权限的工具,例如在逐个目录的基础上:目录 A 中的文件应该具有所有者 A、组 B 和权限 xyzxyzxyz,并且能够在 git 搞砸之后重新应用它们

目前考虑:
选项 1:Git 中的功能或标志设置允许这样做。

- 否:'git 不是部署工具'

选项 2:使用 git-cache-meta 存储文件设置,然后再次应用文件设置。
- 否:文件来自没有 Unix 类型权限的 Windows 开发环境,因此无法处理传入权限

选项 3:使用(根本上没有足够的文档且实际上仅限于专家)metastore
- 否:据我所知,与选项 2 相同的问题

选项 4:查找、研究和试验一整套额外的工具(例如 Deployer、Gitolite),这些工具似乎旨在完成一系列其他事情,可能会或可能不会做我正在寻找的事情
- 可能:但是,如果是的话:哪一个可以做到这一点?你用什么?什么容易/简单实现?

选项 5:在相关目录上设置组 ID 以强制“组”所有权
- 否:这对“所有者”或权限没有帮助

最佳答案

关于linux - 从 GIT 存储库中提取时如何确保 Linux 文件所有权正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133769/

相关文章:

linux - 在 centOS 6.4 64 位中安装 teamviewer 时出现依赖项错误?

c - 如何从终端分离程序并将其附加回去?

git - 邪恶在 git 中 merge ?

git - 如何阻止 git 提交未更改的文件?

c - fopen C 上的段错误

python - 使用 Try & Except Python 2.7.1 的文件打开功能

linux - 每 10 秒将 bash 输出重定向到新文件

linux - 您拥有 Archive::Tar 1.3901,但建议使用 1.50 或更高版本。请升级。问题

git - 删除旧的、已推送的 git commit 中对文件的更改?

c - (C) 在屏幕上和文件中打印所有 CP850 字符的程序有不同的输出