Git 服务端挂钩

所有服务端的工作都在hooks(挂钩)目录的 update(更新)脚本中制定。update 脚本为每一个得到推送的分支运行一次;它接受推送目标的索引,该分支原来指向的位置,以及被推送的新内容。如果推送是通过 SSH 进行的,还可以获取发出此次操作的用户。如果设定所有操作都通过公匙授权的单一帐号(比如"git")进行,就有必要通过一个 shell 包装依据公匙来判断用户的身份,并且设定环境变量来表示该用户的身份。下面假设尝试连接的用户储存在 $USER 环境变量里,我们的 update 脚本首先搜集一切需要的信息:

[code]#!/usr/bin/env ruby

refname = ARGV[0]
oldrev = ARGV[1]
newrev = ARGV[2]
user = ENV[‘USER’]

puts “Enforcing Policies… \n(#{refname}) (#{oldrev[0,6]}) (#{newrev[0,6]})”[/code]

REF:http://cwiki.ossez.com/pages/viewpage.action?pageId=7045937