Commit 5abbada41e101ff832d036d5d1946d6f89fda771

Authored by Valery Sizov
1 parent a8e4f3ed

Auto-merge: implemented lock file

Showing 1 changed file with 13 additions and 8 deletions   Show diff stats
lib/gitlab_merge.rb
@@ -28,14 +28,19 @@ class GitlabMerge @@ -28,14 +28,19 @@ class GitlabMerge
28 end 28 end
29 29
30 def pull 30 def pull
31 - self.project.repo.git.clone({:branch => merge_request.target_branch}, project.url_to_repo, merge_path)  
32 - #TODO When user do not have permissions then raise exception  
33 - Dir.chdir(merge_path) do  
34 - merge_repo = Grit::Repo.new('.')  
35 - merge_repo.git.sh "git config user.name \"#{user.name}\""  
36 - merge_repo.git.sh "git config user.email \"#{user.email}\""  
37 - output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch)  
38 - yield(merge_repo, output) 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 + #TODO When user do not have permissions then raise exception
  36 + Dir.chdir(merge_path) do
  37 + merge_repo = Grit::Repo.new('.')
  38 + merge_repo.git.sh "git config user.name \"#{user.name}\""
  39 + merge_repo.git.sh "git config user.email \"#{user.email}\""
  40 + output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch)
  41 + yield(merge_repo, output)
  42 + end
  43 +
39 end 44 end
40 end 45 end
41 end 46 end