48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| module Gitlab
 | |
|   module Git
 | |
|     class CommitterWithHooks < Gollum::Committer
 | |
|       attr_reader :gl_wiki
 | |
| 
 | |
|       def initialize(gl_wiki, options = {})
 | |
|         @gl_wiki = gl_wiki
 | |
|         super(gl_wiki.gollum_wiki, options)
 | |
|       end
 | |
| 
 | |
|       def commit
 | |
|         # TODO: Remove after 10.8
 | |
|         return super unless allowed_to_run_hooks?
 | |
| 
 | |
|         result = Gitlab::Git::OperationService.new(git_user, gl_wiki.repository).with_branch(
 | |
|           @wiki.ref,
 | |
|           start_branch_name: @wiki.ref
 | |
|         ) do |start_commit|
 | |
|           super(false)
 | |
|         end
 | |
| 
 | |
|         result[:newrev]
 | |
|       rescue Gitlab::Git::PreReceiveError => e
 | |
|         message = "Custom Hook failed: #{e.message}"
 | |
|         raise Gitlab::Git::Wiki::OperationError, message
 | |
|       end
 | |
| 
 | |
|       private
 | |
| 
 | |
|       # TODO: Remove after 10.8
 | |
|       def allowed_to_run_hooks?
 | |
|         @options[:user_id] != 0 && @options[:username].present?
 | |
|       end
 | |
| 
 | |
|       def git_user
 | |
|         @git_user ||= Gitlab::Git::User.new(@options[:username],
 | |
|                                             @options[:name],
 | |
|                                             @options[:email],
 | |
|                                             gitlab_id)
 | |
|       end
 | |
| 
 | |
|       def gitlab_id
 | |
|         Gitlab::GlId.gl_id_from_id_value(@options[:user_id])
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |