From 78d620b3b63fdd78b2cd1e4386822f93a701bc42 Mon Sep 17 00:00:00 2001 From: randx Date: Thu, 29 Mar 2012 18:03:05 +0300 Subject: Raw gitlab automerge feature --- lib/gitlab_merge.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/gitlab_merge.rb (limited to 'lib/gitlab_merge.rb') diff --git a/lib/gitlab_merge.rb b/lib/gitlab_merge.rb new file mode 100644 index 00000000000..85cc1667f65 --- /dev/null +++ b/lib/gitlab_merge.rb @@ -0,0 +1,26 @@ +class GitlabMerge + attr_accessor :project, :merge_path, :merge_request + + def initialize(merge_request) + self.merge_request = merge_request + self.project = merge_request.project + self.merge_path = File.join(Rails.root, "tmp", "merge_repo", project.path) + FileUtils.rm_rf(merge_path) + FileUtils.mkdir_p merge_path + end + + def merge + self.project.repo.git.clone({:branch => merge_request.target_branch}, project.url_to_repo, merge_path) + output = "" + Dir.chdir(merge_path) do + merge_repo = Grit::Repo.new('.') + output = merge_repo.git.pull({}, "origin", merge_request.source_branch) + if output =~ /Automatic merge failed/ + return false + else + merge_repo.git.push({}, "origin", merge_request.target_branch) + return true + end + end + end +end -- cgit v1.2.1