通过git hook实现hexo博客自动发布

不觉间这个博客已经弄了小半年了,确实更新频率太低,而且每次发布的时候比较麻烦,虽说hexo提供了好多部署方式方法,试了下rsync方案感觉是特别好用, 另外这个博客作者不止一个,还有权限问题。
hexo自带git部署不过好像和我的需求不太一样

现在的方案

现在傻傻的方案是这样的,有个git仓库,每次写完了先push一下,然后到hexo的工程里面hexo generate一下,生成HTML之后手动rsync到web服务器上

虽然不复杂,但是步骤比较多,每次都得重复,本着DRY原则, 还是要把过程自动化

切入点

很明显,希望自动化整个过程的话就是在push之后来操作了,那么这就又有两条路,客户端和服务端,客户端就是现有方案了,所以瞄到服务端去,在服务端收到提交的代码之后来操作,于是git hook就是顺理成章了。

Git hook (post-receive)

git的hook那是十分的方便,详细在这
在服务端仓库里面的hooks文件夹里面添加一个文件,叫post-receive, 赋予可执行权限,这个其实就是一个可执行的脚本,里面想写什么就写什么了

针对我这个是这样:
首先在本地文件夹clone出一个项目来,装好hexo,写post-receive

1
2
3
4
#!/bin/sh
cd clone出来的文件夹
git --git-dir .git pull # 需要指定git文件夹,不然可能会出现"remote: fatal: Not a git repository: '.'"
hexo generate

最后把生成出来的public文件夹当作web服务器的根文件夹