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 |