GITOSC是国内版本的github,挺好用的,最近好像还开放了应用托管。稍后测试。
这是之前写的一个PHP文件,大概作用就是实现git@osc接收到新的push时,符合条件的情况下,通知服务器进行pull拉取更新。
例如我在最后一次push中包含了一个commit,commit中有release字样,并在git@osc开启了push钩子,那么服务器将在收到通知后进行pull。
安全性:push钩子可以设置密码,不必担心被他人恶意请求。
使用方法
将此代码保存到服务器,并确保可以访问。确保你的服务器已经配置好git,可以直接使用git pull origin master
进行pull操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<? header("Content-type: text/html; charset=utf-8"); $js=json_decode($_REQUEST["hook"]);//json转换 if($js->password!="你在osc设置的密码")die("ERROR!");//判断密码 $fp=fopen("./log.txt",'a'); $lastcommit=$js->push_data->commits[count($js->push_data->commits)-1];//获取最后的commit if(strstr($lastcommit->message,"release"))//这里意为:如果最后的commit包含"release"则进行自动发布。 { exec("cd /你的web目录/");//进入目录 exec("git pull origin master");//进行git拉取,前提是使用了ssh fwrite($fp,"※".date('Y-m-d H:i:s')."\t".$lastcommit->message."\t".$lastcommit->author->name."\n");//进行记录 } else { fwrite($fp,date('Y-m-d H:i:s')."\t".$lastcommit->message."\t".$lastcommit->author->name."\n"); } |
请根据代码里的提示修改至少2个位置,目录和osc密码。
这样服务器这边就设置好了。
随后在gitosc上设置,进入项目-管理-PUSH钩子:
填写好前面的PHP文件的路径,以及密码。大功告成!
代码中我还写了log,将记录所有push操作,以及作者,带※号的为进行pull操作的。
转载请注明来源谢谢!