【问题标题】:Git server-side hook - committer nameGit 服务器端挂钩 - 提交者名称
【发布时间】:2015-02-26 08:29:39
【问题描述】:

在服务器端钩子文件预接收(ruby)中带有 Gitlab 7.7.2 的 Git 服务器 1.8.1.4 上,我可以通过 SSH 向服务器推送提交来从服务器数据库中获取用户名:

$GIT_AUTHOR_NAME['name']

我想检查这个用户的名字和提交者的名字。 我尝试使用变量 $GIT_COMMITTER_NAME,但我得到了 'nil' 值。

如何获取客户端命令推送前设置的committer名称?

git config user.name "Joe Doe"

电子邮件地址('user.email')的相同问题。

谢谢!

【问题讨论】:

  • 你是什么意思检查这个用户的名字和提交者的名字
  • 类似于 if $GIT_AUTHOR_NAME['name'] != $GIT_COMMITTER_NAME['name'] exit 1
  • 您想比较提交者姓名是否等于作者姓名?请问为什么?
  • 让我们避免提交混乱。当然,提交者的名字也可以有不同的用法......

标签: git


【解决方案1】:

我的解决方案:

#!/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

【讨论】:

  • 伟大的命令! 'oneline' pretty 选项对我来说没有多大帮助,所以我跳过了它。
猜你喜欢
  • 2019-06-10
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多