1module Gitlab 2 module Git 3 class CommitterWithHooks < Gollum::Committer 4 attr_reader :gl_wiki 5 6 def initialize(gl_wiki, options = {}) 7 @gl_wiki = gl_wiki 8 super(gl_wiki.gollum_wiki, options) 9 end 10 11 def commit 12 result = Gitlab::Git::OperationService.new(git_user, gl_wiki.repository).with_branch( 13 @wiki.ref, 14 start_branch_name: @wiki.ref 15 ) do |_start_commit| 16 super(false) 17 end 18 19 result[:newrev] 20 rescue Gitlab::Git::PreReceiveError => e 21 message = "Hook failed: #{e.message}" 22 raise Gitlab::Git::Wiki::OperationError, message 23 end 24 25 private 26 27 def git_user 28 @git_user ||= Gitlab::Git::User.new(@options[:username], 29 @options[:name], 30 @options[:email], 31 gitlab_id) 32 end 33 34 def gitlab_id 35 Gitlab::GlId.gl_id_from_id_value(@options[:user_id]) 36 end 37 end 38 end 39end 40