git - post-receive hook -- 如果传入文件类型为 *.cgi,则将权限设置为 755

标签 git githooks

每次我在本地修改 *.cgi 文件时,在推送到远程服务器后,远程服务器上的 755 权限都会被删除。最好在接收后 Hook 中使用附加代码来处理此问题,例如 -- 如果文件类型为 *.cgi,则将权限设置为 755。或者,是否有更好的方法来处理此问题?如果 post-receive Hook 中的几行额外代码可以完成这项工作,那么我们将不胜感激。

#!/bin/sh
GIT_WORK_TREE=/home/lawlist git checkout -f

编辑(2014 年 4 月 27 日):我发现,通过在推送到远程服务器 (Linux) 之前在本地计算机(OSX 机器)上设置所需的权限,权限为在远程服务器上进行相应设置。这可能是问题的可接受答案,但也可能存在用户不希望在本地计算机上设置权限的情况,因此我将更多地考虑这一点并检查一些 bash / shell可以与 post-receive 一起使用的代码在我发布答案之前先钩住。本质上,bash / shell脚本需要查看文件是否已存在以及已分配哪些权限,并在更新推送发生后恢复这些权限。

最佳答案

如果您的目标是使用本地计算机管理远程服务器上的权限,那么mockinterface 和 patthoyts 的答案都是有效的。

需要指出的是,post-receive Hook 是提前编写的,并考虑了某些预期条件。毫无疑问,会出现现有 post-receive Hook 未考虑到的独特情况,因此需要使用另一种方法。

如果您希望在两个位置(即远程和本地)获得 755 权限,则在推送之前在本地设置权限就足够了。

如果您希望在两个位置(即远程和本地)获得不同的权限,那么您将需要使用本线程中其他人建议的方法之一。

关于git - post-receive hook -- 如果传入文件类型为 *.cgi,则将权限设置为 755,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330206/

相关文章:

git - 将 PowerShell 脚本作为 git hooks 运行

python - 预提交运行 unittest git hooks : ModuleNotFoundError for installed python module in environment

git - 如何将你的工件自动发布到 GitHub

ruby - 如何在代理后面 bundle 安装 git gem?

git - 设置Git来管理远程网站

git 无法在 Visual Studio 代码中工作

git rev-parse --git-path hooks 总是返回绝对路径

git - 递归 git update-index --assume-unchanged

java - Maven单独构建打包和Cucumber集成测试

git - 在我已经进行更改后如何在新分支中进行 git commit?