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 28 end
29 29  
30 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 44 end
40 45 end
41 46 end
... ...