每次我在本地修改 *.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/