我整天都在寻找一种方法来在服务器端进行更改(例如,当 WordPress 安装新插件更新或有人上传某些内容时)以提交到我用于站点部署的 Git 存储库。这是我得到的最接近的:
#!/bin/sh
git --git-dir=/home/cameronm/git/cameronmalek.git --work-tree=/home/cameronm/public_html/ checkout -f master
git --work-tree=/home/cameronm/public_html/ diff --exit-code &>-
if [ "$?" -ne 0 ]; then
git --work-tree="/home/cameronm/public_html/" add .;
git --work-tree="/home/cameronm/public_html/" commit -m "automated server-side update";
fi
这个解决方案的问题,以及这篇文章的原因,是这一切都以错误的顺序发生。在我的更新被推送之前,我正在寻找一种将其他非 Git 方所做的所有更改提交到实时网站目录的方法。这样做的原因是,如果我尝试推送的更新覆盖了最近添加到服务器的内容,我希望能够潜在地看到合并冲突。
我整晚都在想办法解决这个问题。这是一个很难描述(和谷歌)的问题,所以如果我可以为你澄清任何事情,请给我一个便条。
感谢您提供的任何帮助!
更新!
您可以在我的 Gists 页面上查看我的工作解决方案(单独的预接收和接收后挂钩)。这是pre-receive hook和post-receive hook。