Git钩子保留Windows文件权限
Posted
技术标签:
【中文标题】Git钩子保留Windows文件权限【英文标题】:Git hook to preserve windows file permissions 【发布时间】:2019-01-17 02:20:17 【问题描述】:我有一个本地 git 存储库,它位于另一个本地 git 存储库的上游。当我从上游存储库拉到下游存储库时,我希望在更新后保留特定文件的 Windows 文件权限。我尝试使用以下解决方案:https://github.com/git/git/blob/master/contrib/hooks/setgitperms.perl#L78
但我相信它是基于 UNIX 安全模型并且不保留我的权限。我怎样才能做到这一点?我正在考虑使用带有 win32security 模块的 python 脚本(因为我不熟悉 perl),但一直无法找到合适的文档。除了手动设置权限之外,我在 Windows 安全方面的经验很少。
【问题讨论】:
您的主要问题是什么?如果只是“我怎样才能做到这一点?”那么这太宽泛了,因为有无数种方法。 @PatrickParker 实际上我认为这很好。 “我怎样才能做到这一点?”类型问题固有不会太宽泛,只有当它们类似于“我如何对 Facebook 克隆进行编程?”时。这个问题有一个明确且具体的问题。 可能。无论哪种方式,都需要澄清问题,以更清楚地表明所问的主要问题是什么。 【参考方案1】:您可以设置您的 git 配置以忽略文件权限差异
git config --global core.fileMode false
我想值得一试。
【讨论】:
【参考方案2】:解决方案最终变得非常简单。我只需要设置运行 python 脚本的 post-checkout 和 -merge 挂钩来设置文件权限。我从here 收集了足够多的关于 win32security 的信息来使用它,并利用 os.getcwd()(在钩子运行时设置为 git repo 根目录)来定位正确的文件。
【讨论】:
以上是关于Git钩子保留Windows文件权限的主要内容,如果未能解决你的问题,请参考以下文章