# Corner-PHP-Deploy
## 项目介绍
- 用PHP写的部署脚本
- 支持在命令行触发
- 支持部署后删除缓存
- 支持指定文件不部署
- 支持增量部署和全量部署
- 全量部署时, 会创建新的目录存放代码, 并更新软连接, 指向新的代码目录
## 软件架构
### 准备
- 软连接A, 作为网站代码的跟目录
- 目录B, 部署用的脚本目录,
- 全量部署: 每次会全量部署到一个按时间命名的目录, 然后将A指向此目录
- 增量部署: 每次找到最新的更改(增删改), 然后覆盖到A指向的目录
- php version 5.4+
- git 最新版本
- 修改cli.php中的宏定义GIT_BIN, 为当前git的可执行文件绝对路径
### 核心代码文件
|文件名|作用|
|:---|:---|
|cli.php| 命令行部署入口文件|
|conf|存放配置文件, 每个配置文件要指定git版本库URL, 要忽略的文件, 缓存文件, 部署到的目录, 软连接名 |
|Lib|存放工具类: git操作的封装类; 读取文件列表的类|
|repo|用来存放git版本库|
### 命令行使用
|命令|解释|
|:---|:---|
|php cli.php -h| 列出所有可用的部署命令 |
|php cli.php -c dev| 使用conf/dev.php 去部署, 将master分支的最新代码, 增量复制到软连接指定的目录中|
|php cli.php -c dev -b test| 使用conf/dev.php 去部署, 将test分支的最新代码, 增量复制到软连接指定的目录中|
|php cli.php -c dev -a| 使用conf/dev.php 去部署, 将master分支的最新代码, 全量复制到指定目录中, 并将软连接指向到这个目录|
|php cli.php -c dev -b test -a| 使用conf/dev.php 去部署, 将test分支的最新代码, 全量复制到指定目录中, 并将软连接指向到这个目录|
|php cli.php -c dev -t v1.0| 使用conf/dev.php 去部署, 将Tag v1.0的最新代码, 全量复制到指定目录中, 并将软连接指向到这个目录|
## 待开发功能
- 版本回退
## 注意
最新版代码中,只支持命令行部署(cli.php); web部署因为安全性没有再继续支持, 还请各位谅解.