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,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 |