不需要钩子,使用 git push 部署网站,

参考资料

  1. Git 2.3 has been released
  2. Git 2.4 — atomic pushes, push to deploy, and more

正文

最近的工作又回到了微信公众号开发(创业团队摸石头,什么都得干。。。),在办公室的电脑上搞了台测试服务器,代码库放在办公室另一台电脑上。方便起见,打算给产品服务器做一个 push-to-deploy 。

所有自己搭建过 git 服务器的人应该都知道,服务器的 git 仓库一般都是 bare 仓库,没有工作目录。而如果不创建成 bare 仓库的话,对当前 branch 的 push 操作都会被拒绝。

以前做 push-to-deploy 的方式是使用 git 的钩子执行脚本,在收到 push 后临时设置仓库的工作目录,检出代码,然后再清除工作目录。虽然也没什么障碍,但总觉得有些不爽就是了。幸运的是,这种额外的配置在 git 2.3 以后就不再是必须的了。

Git 2.3 引入的新特性

Git 2.3 版本以后,如果你向服务器上有工作目录的仓库 push 改动的话,只要服务器的工作目录是干净的(没有未提交的变更),你 push 的改动就会直接体现在服务器的工作目录下。不需要编写钩子脚本,要实现 push-to-deploy 只需要在服务器的仓库改动一个设置就完事了:

$ git config receive.denyCurrentBranch updateInstead

话说这个配置的命令还真是有够直白,好像都没必要特意去记下它了。。。

配置流程

以上,猴子都能懂的 push-to-deploy 攻略总结如下:

  1. 服务器更新 Git 版本到 2.3 以上(建议 2.4 以上,后文解释)
  2. 服务器在选定的网站根目录新建 Git 仓库,不用 bare 。
  3. 服务器在新建的仓库下执行命令:$ git config receive.denyCurrentBranch updateInstead
  4. 客户端 Git 版本随意,在新仓库或原有仓库中新建一个名为 deploy 的 remote repo ,指向服务器仓库地址:git remote add deploy ssh://gaga@foo.bar/path/to/your/document/root
  5. 客户端向 deploy 分支 push 变更,服务器端工作目录随即改变。
  6. 完事

另外一些可能有用的东西

  1. Git 2.4 对这个特性又做了一些补充,加入了一个仅在该特性被触发时会执行的钩子push-to-checkout。对于一些代码更新后需要额外进行一些操作的项目,这是一个十分贴心的小功能。其他更新详见参考资料 2
  2. 这种方式会在项目根目录暴露包含项目所有历史的 .git 文件夹,如果项目对此比较敏感的话最好谨慎处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏农夫安全

某服务器安全溯源审计报告

流量关联分析 通过查看服务器连接的程序发现有外网ip 23.33.178.8和91.121.2.76两个,查看到clock-applet一般为程序自带的文件,而...

3546
来自专栏FreeBuf

一个人的武林:内网渗透测试思路(二)

写在前面 跟web渗透(上一篇)不同,内网渗透需要更多的随机性和突破口,情况较为复杂,遇到障碍,有时可以换种思路突破,很多时候则无奈的只能止步于此。下面分享一些...

3435
来自专栏梦里茶室

【Chromium中文文档】沙箱FAQ

什么是沙箱? 沙箱是一个允许沙箱进程创建的C++库,沙箱进程是一种运行在非常限制性的环境中的进程。沙箱进程可以唯一自由使用的资源是CPU周期和内存。例如,沙箱进...

23210
来自专栏农夫安全

Discuz!X ≤3.4 任意文件删除漏洞复现+GetWebshell

今天看到一位师傅发了一篇分析的文章: 【漏洞分析】Discuz!X ≤3.4 任意文件删除漏洞分析 复现的话需要源码在网上还是找到了 那我们根据文章所知的几个步...

7207
来自专栏ytkah

帝国cms文章页调用当前文章URL如何操作?

  前面我们讨论过dedecms文章页调用地址(当前文章URL)如何操作,作为同台竞技的帝国cms也能在文章页调用当前文章URL吗?答案是肯定的!那就随ytka...

4764
来自专栏walterlv - 吕毅的博客

Git 更安全的强制推送,--force-with-lease

发布于 2018-05-07 11:16 更新于 2018-09...

1452
来自专栏数据和云

按图索骥:Oracle数据库无响应故障的处理思路和方法

熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 无响应故障现象分析 ---- Oracle数据库无响应故障,简单地讲就是数据库实例...

3528
来自专栏大数据架构师专家

docker pull 下载加速-2018

使用docker pull,命令下载镜像太慢了,默认是从国外的,本文记录下如何配置国内阿里云竞相加速方式。文档力求简单.

2272
来自专栏Youngxj

kangle安装vhms前台销售教程

7002
来自专栏黑白安全

渗透指定站点笔记

首先介绍下什么样站点可以入侵:我认为必须是动态的网站 如ASP、PHP、 JSP等代码编写的站点 如果是静态的(.htm或html),一般是不会成功的。

2514

扫码关注云+社区

领取腾讯云代金券