svn的钩子十分好用,git也可以实现类似的钩子功能,只不过因为其为分布式的,实现钩子的方式有些特殊!!!

此功能需要web.py,github等远程库的webhooks支持

  1. import web
  2. import os
  3. import demjson
  4. urls = (
  5. '/github', 'hello',
  6. '/github/', 'hello',
  7. )
  8. class hello:
  9. def GET(self,a=''):
  10. print 'only post'
  11. def POST(self,name=''):
  12. i = web.input()
  13. if not i.has_key('payload'):
  14. print 'nodata'
  15. else:
  16. data = demjson.decode(i.payload)
  17. if 'update' == data['commits'][0]['message']:
  18. dir = '/data/www/www.521php.com/'
  19. os.system('cd '+dir+';git pull origin master 1>/dev/null 2>&1')
  20. os.system('echo "git update" | mail -s "web update" zhangcunchao_cn@163.com')
  21. if __name__ == "__main__": web.run(urls, globals())