Git 服务器端挂钩 - 提交者姓名
Git server-side hook - committer name
在 Git 服务器 1.8.1.4 上 Gitlab 7.7.2 在服务器端挂钩文件预接收 (ruby) 我可以得到服务器数据库中的用户通过 SSH 推送提交到服务器:
$GIT_AUTHOR_NAME['name']
我想用提交者的名字来检查这个用户的名字。
我尝试使用变量 $GIT_COMMITTER_NAME,但我得到了 'nil' 值。
如何获取客户端命令推送前设置的committer名称?
git config user.name "Joe Doe"
关于电子邮件地址的相同问题 ('user.email')。
谢谢!
我的解决方案:
#!/usr/bin/env ruby
# pre-receive
refs = ARGF.read
key_id = ENV['GL_ID']
...
# get the user
user = GitlabNet.new.discover(key_id)
author_name = user['name']
committer_name = `git show --pretty=oneline --pretty=format:%an #{newrev} | head -n1`.strip
if author_name != committer_name
print "Name of the committer must be '" + author_name + "' but found '" + committer_name + "'.\n"
exit 1
end
...
newrev
是当前提交的 SHA,值取自 refs
。
在 Git 服务器 1.8.1.4 上 Gitlab 7.7.2 在服务器端挂钩文件预接收 (ruby) 我可以得到服务器数据库中的用户通过 SSH 推送提交到服务器:
$GIT_AUTHOR_NAME['name']
我想用提交者的名字来检查这个用户的名字。 我尝试使用变量 $GIT_COMMITTER_NAME,但我得到了 'nil' 值。
如何获取客户端命令推送前设置的committer名称?
git config user.name "Joe Doe"
关于电子邮件地址的相同问题 ('user.email')。
谢谢!
我的解决方案:
#!/usr/bin/env ruby
# pre-receive
refs = ARGF.read
key_id = ENV['GL_ID']
...
# get the user
user = GitlabNet.new.discover(key_id)
author_name = user['name']
committer_name = `git show --pretty=oneline --pretty=format:%an #{newrev} | head -n1`.strip
if author_name != committer_name
print "Name of the committer must be '" + author_name + "' but found '" + committer_name + "'.\n"
exit 1
end
...
newrev
是当前提交的 SHA,值取自 refs
。