Commit ae565d24ee6c0d1f26bc47b3419ca2b58474d7a3

Authored by Dmitriy Zaporozhets
1 parent 7058258a

Increased automerge timeout. Works for 300 commits MR on repo with 200MB size

Showing 1 changed file with 18 additions and 14 deletions   Show diff stats
lib/gitlab_merge.rb
@@ -28,21 +28,25 @@ class GitlabMerge @@ -28,21 +28,25 @@ class GitlabMerge
28 end 28 end
29 29
30 def pull 30 def pull
31 - File.open(File.join(Rails.root, "tmp", "merge_repo", "#{project.path}.lock"), "w+") do |f|  
32 - f.flock(File::LOCK_EX)  
33 -  
34 - self.project.repo.git.clone({:branch => merge_request.target_branch}, project.url_to_repo, merge_path)  
35 - unless File.exist?(self.merge_path)  
36 - raise "Gitlab user do not have access to repo. You should run: rake gitlab_enable_automerge" 31 + Grit::Git.with_timeout(30.seconds) do
  32 + File.open(File.join(Rails.root, "tmp", "merge_repo", "#{project.path}.lock"), "w+") do |f|
  33 + f.flock(File::LOCK_EX)
  34 +
  35 + self.project.repo.git.clone({:branch => merge_request.target_branch}, project.url_to_repo, merge_path)
  36 + unless File.exist?(self.merge_path)
  37 + raise "Gitlab user do not have access to repo. You should run: rake gitlab_enable_automerge"
  38 + end
  39 + Dir.chdir(merge_path) do
  40 + merge_repo = Grit::Repo.new('.')
  41 + merge_repo.git.sh "git config user.name \"#{user.name}\""
  42 + merge_repo.git.sh "git config user.email \"#{user.email}\""
  43 + output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch)
  44 + yield(merge_repo, output)
  45 + end
37 end 46 end
38 - Dir.chdir(merge_path) do  
39 - merge_repo = Grit::Repo.new('.')  
40 - merge_repo.git.sh "git config user.name \"#{user.name}\""  
41 - merge_repo.git.sh "git config user.email \"#{user.email}\""  
42 - output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch)  
43 - yield(merge_repo, output)  
44 - end  
45 -  
46 end 47 end
  48 +
  49 + rescue Grit::Git::GitTimeout
  50 + return false
47 end 51 end
48 end 52 end