diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/encode.rb (renamed from lib/gitlabhq/encode.rb) | 2 | ||||
-rw-r--r-- | lib/gitlab/git_host.rb (renamed from lib/gitlabhq/git_host.rb) | 6 | ||||
-rw-r--r-- | lib/gitlab/gitolite.rb (renamed from lib/gitlabhq/gitolite.rb) | 4 | ||||
-rw-r--r-- | lib/gitlab/logger.rb (renamed from lib/gitlabhq/logger.rb) | 2 | ||||
-rw-r--r-- | lib/gitlab/merge.rb | 60 | ||||
-rw-r--r-- | lib/gitlab/satellite.rb (renamed from lib/gitlabhq/satellite.rb) | 2 | ||||
-rw-r--r-- | lib/gitlab_merge.rb | 58 | ||||
-rw-r--r-- | lib/tasks/gitlab/enable_automerge.rake | 2 |
8 files changed, 69 insertions, 67 deletions
diff --git a/lib/gitlabhq/encode.rb b/lib/gitlab/encode.rb index df40206d5eb..a9660fa513e 100644 --- a/lib/gitlabhq/encode.rb +++ b/lib/gitlab/encode.rb @@ -1,4 +1,4 @@ -module Gitlabhq +module Gitlab module Encode extend self diff --git a/lib/gitlabhq/git_host.rb b/lib/gitlab/git_host.rb index 9a6eecb3f0a..3d8d17473c5 100644 --- a/lib/gitlabhq/git_host.rb +++ b/lib/gitlab/git_host.rb @@ -1,9 +1,9 @@ -require File.join(Rails.root, "lib", "gitlabhq", "gitolite") +require File.join(Rails.root, "lib", "gitlab", "gitolite") -module Gitlabhq +module Gitlab class GitHost def self.system - Gitlabhq::Gitolite + Gitlab::Gitolite end def self.admin_uri diff --git a/lib/gitlabhq/gitolite.rb b/lib/gitlab/gitolite.rb index 48c67082b22..c7b407ddf23 100644 --- a/lib/gitlabhq/gitolite.rb +++ b/lib/gitlab/gitolite.rb @@ -2,7 +2,7 @@ require 'gitolite' require 'timeout' require 'fileutils' -module Gitlabhq +module Gitlab class Gitolite class AccessDenied < StandardError; end @@ -46,7 +46,7 @@ module Gitlabhq end end rescue Exception => ex - Gitlabhq::Logger.error(ex.message) + Gitlab::Logger.error(ex.message) raise Gitolite::AccessDenied.new("gitolite timeout") end diff --git a/lib/gitlabhq/logger.rb b/lib/gitlab/logger.rb index 08b4bde0b0c..45a990713f2 100644 --- a/lib/gitlabhq/logger.rb +++ b/lib/gitlab/logger.rb @@ -1,4 +1,4 @@ -module Gitlabhq +module Gitlab class Logger def self.error(message) @@logger ||= ::Logger.new(File.join(Rails.root, "log/githost.log")) diff --git a/lib/gitlab/merge.rb b/lib/gitlab/merge.rb new file mode 100644 index 00000000000..695e41e528d --- /dev/null +++ b/lib/gitlab/merge.rb @@ -0,0 +1,60 @@ +module Gitlab + class Merge + attr_accessor :project, :merge_request, :user + + def initialize(merge_request, user) + self.user = user + self.merge_request = merge_request + self.project = merge_request.project + end + + def can_be_merged? + result = false + process do |repo, output| + result = !(output =~ /CONFLICT/) + end + result + end + + def merge + process do |repo, output| + if output =~ /CONFLICT/ + false + else + repo.git.push({}, "origin", merge_request.target_branch) + true + end + end + end + + def process + Grit::Git.with_timeout(30.seconds) do + lock_file = File.join(Rails.root, "tmp", "merge_repo_#{project.path}.lock") + + File.open(lock_file, "w+") do |f| + f.flock(File::LOCK_EX) + + unless project.satellite.exists? + raise "You should run: rake gitlab:app:enable_automerge" + end + + project.satellite.clear + + Dir.chdir(project.satellite.path) do + merge_repo = Grit::Repo.new('.') + merge_repo.git.sh "git reset --hard" + merge_repo.git.sh "git fetch origin" + merge_repo.git.sh "git config user.name \"#{user.name}\"" + merge_repo.git.sh "git config user.email \"#{user.email}\"" + merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}" + output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch) + yield(merge_repo, output) + end + end + end + + rescue Grit::Git::GitTimeout + return false + end + end +end diff --git a/lib/gitlabhq/satellite.rb b/lib/gitlab/satellite.rb index cd713a647cc..4bcbfe8db88 100644 --- a/lib/gitlabhq/satellite.rb +++ b/lib/gitlab/satellite.rb @@ -1,4 +1,4 @@ -module Gitlabhq +module Gitlab class Satellite PARKING_BRANCH = "__parking_branch" diff --git a/lib/gitlab_merge.rb b/lib/gitlab_merge.rb deleted file mode 100644 index 2ca7b26d865..00000000000 --- a/lib/gitlab_merge.rb +++ /dev/null @@ -1,58 +0,0 @@ -class GitlabMerge - attr_accessor :project, :merge_request, :user - - def initialize(merge_request, user) - self.user = user - self.merge_request = merge_request - self.project = merge_request.project - end - - def can_be_merged? - result = false - process do |repo, output| - result = !(output =~ /CONFLICT/) - end - result - end - - def merge - process do |repo, output| - if output =~ /CONFLICT/ - false - else - repo.git.push({}, "origin", merge_request.target_branch) - true - end - end - end - - def process - Grit::Git.with_timeout(30.seconds) do - lock_file = File.join(Rails.root, "tmp", "merge_repo_#{project.path}.lock") - - File.open(lock_file, "w+") do |f| - f.flock(File::LOCK_EX) - - unless project.satellite.exists? - raise "You should run: rake gitlab:app:enable_automerge" - end - - project.satellite.clear - - Dir.chdir(project.satellite.path) do - merge_repo = Grit::Repo.new('.') - merge_repo.git.sh "git reset --hard" - merge_repo.git.sh "git fetch origin" - merge_repo.git.sh "git config user.name \"#{user.name}\"" - merge_repo.git.sh "git config user.email \"#{user.email}\"" - merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}" - output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch) - yield(merge_repo, output) - end - end - end - - rescue Grit::Git::GitTimeout - return false - end -end diff --git a/lib/tasks/gitlab/enable_automerge.rake b/lib/tasks/gitlab/enable_automerge.rake index 647e06f675e..07f80586c60 100644 --- a/lib/tasks/gitlab/enable_automerge.rake +++ b/lib/tasks/gitlab/enable_automerge.rake @@ -2,7 +2,7 @@ namespace :gitlab do namespace :app do desc "GITLAB | Enable auto merge" task :enable_automerge => :environment do - Gitlabhq::GitHost.system.new.configure do |git| + Gitlab::GitHost.system.new.configure do |git| git.admin_all_repo end |