Commit 5abbada41e101ff832d036d5d1946d6f89fda771
1 parent
a8e4f3ed
Exists in
master
and in
4 other branches
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 | ... | ... |