# GitHook **Repository Path**: ppblog/GitHook ## Basic Information - **Project Name**: GitHook - **Description**: 利用git hook自动部署代码到服务器 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 2 - **Created**: 2015-10-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #GitHook ##版本1.0.1 ###作者 跑偏 http://www.ppblog.cn/githook.html ###说明 利用Git@OSC的钩子hook来自动部署到服务器。 也就是说你在本地提交代码的时候服务器端可以自动pull新代码。 这样就解决了用ftp上传时个别文件忘记上传的情况。 ###使用方法 1. 注册一个专用的Git@OSC账号。 2. 在Git@OSC指定仓库->管理->项目成员管理中添加新账户为观察者。 3. 在Git@OSC指定仓库->管理->PUSH钩子,添加钩子地址和密码。 4. 服务器端clone你自己的项目,这里要让git记住你的观察者的账号和密码。 5. 修改githook.php中的$projectArray数组来定义多个项目的配置。 $projectArray中的key就是Git@OSC钩子管理中你设置的密码。 ###数组解释 ``` "密码" => array( "name" => "项目名称", "path" => 'PATH=$PATH:/usr/local/git/bin && cd /data/wwwroot/githooktest/githooktest/',//自定义shell,进入项目目录 "origin" => "master",//要pull的分支名称 "release" => "release",//commit中只要包含release关键字就执行pull "shell" => ""//自定义shell ), ``` ###注意 1. 服务器端记住观察者账号和密码,可以在clone时使用如下格式的url。 git clone https://yourname:password@git.oschina.net/name/project.git 2. yourname是邮箱格式,所以要将@改为%40。 3. 取消掉git在pull时也获取权限。方法如下: **修改项目下.git/config,filemode = false** 4. 要保证有GitHook站点有权限访问你自己的项目目录。