diff options
author | randx <dmitriy.zaporozhets@gmail.com> | 2012-03-29 18:03:05 +0300 |
---|---|---|
committer | randx <dmitriy.zaporozhets@gmail.com> | 2012-03-29 18:03:05 +0300 |
commit | 78d620b3b63fdd78b2cd1e4386822f93a701bc42 (patch) | |
tree | 4dd832c46f62778d34c18bdb91319ea7415793fe /lib/gitlab_merge.rb | |
parent | 8ee0993fdf783ad12823ff817cd531df0bc363eb (diff) | |
download | gitlab-ce-78d620b3b63fdd78b2cd1e4386822f93a701bc42.tar.gz |
Raw gitlab automerge feature
Diffstat (limited to 'lib/gitlab_merge.rb')
-rw-r--r-- | lib/gitlab_merge.rb | 26 |
1 files changed, 26 insertions, 0 deletions
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 |