"Bare" Git 仓库:如何让 Apache 始终“看到”最新的提交?

3
我们在服务器上有一个“裸”Git仓库,用于Web门户项目。多个程序员、设计师等从中执行数十次pushpull操作。
现在我们想要在服务器上测试该项目,并始终通过安装在与“裸”Git仓库相同的机器上的Apache Web服务器测试最后一次提交。
我们如何“取消裸体”,让工作目录始终仅包含来自最后一次push的最新提交?
或者采取其他任何旨在实现相同结果的方法?
1个回答

6

您可以使用 post-receive 钩子在您的 web 服务器 文档根目录/存储库中执行 git pull

在您的裸存储库中执行:

mv hooks/post-receive.sample hooks/post-receive
chmod +x .git/hooks/post-receive

收到的邮件应该类似于以下内容:
#!/bin/sh
WEB_ROOT='/var/www/project'
cd $WEB_ROOT
git pull

如果你不想让网站目录成为git仓库,可以使用更加优雅的解决方案,你也可以查看git文档中关于钩子(hooks)的内容。

注意:如果你使用简单的解决方案,请确保你的Web服务器不会提供.git目录的访问,否则黑客/破解者有可能获取到网站源代码的访问权限!


感谢您提供的安全提示,但是由于服务器不在互联网上,所以不用担心。 - gd1
1
@gd1:别忘了,大多数攻击也来自内部,即公司的一些员工。安全最重要,禁止访问.git目录只需要在Web服务器配置文件中加上一行代码。 - RageZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接