summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-01-15 10:36:12 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-01-15 10:36:12 +0000
commit38d8d749d73921f370ec8ff28e19f2a5fb7e6f34 (patch)
tree98e7ae004c29eeefe56766a4d988a7f8a7bd6b8f /lib
parent9a1d0c1739ce627b44c94da2e84e3f2d24faea7f (diff)
parent99a2b31e98f3934407b782ee4a2d2a26c8ec4e2a (diff)
downloadgitlab-ce-38d8d749d73921f370ec8ff28e19f2a5fb7e6f34.tar.gz
Merge branch 'feature/merge_commit_message' of /home/git/repositories/gitlab/gitlabhq
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/satellite/merge_action.rb44
1 files changed, 11 insertions, 33 deletions
diff --git a/lib/gitlab/satellite/merge_action.rb b/lib/gitlab/satellite/merge_action.rb
index 54afd6ab95c..85615f282c4 100644
--- a/lib/gitlab/satellite/merge_action.rb
+++ b/lib/gitlab/satellite/merge_action.rb
@@ -24,10 +24,10 @@ module Gitlab
# Returns false if the merge produced conflicts
# Returns false if pushing from the satellite to the repository failed or was rejected
# Returns true otherwise
- def merge!
+ def merge!(merge_commit_message = nil)
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
- if merge_in_satellite!(merge_repo)
+ if merge_in_satellite!(merge_repo, merge_commit_message)
# push merge back to bare repo
# will raise CommandFailed when push fails
merge_repo.git.push(default_options, :origin, merge_request.target_branch)
@@ -49,14 +49,7 @@ module Gitlab
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
-
- if merge_request.for_fork?
- diff = merge_repo.git.native(:diff, default_options, "origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}")
- else
- diff = merge_repo.git.native(:diff, default_options, "#{merge_request.target_branch}", "#{merge_request.source_branch}")
- end
-
- return diff
+ diff = merge_repo.git.native(:diff, default_options, "origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}")
end
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
@@ -88,14 +81,7 @@ module Gitlab
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
-
- if (merge_request.for_fork?)
- patch = merge_repo.git.format_patch(default_options({stdout: true}), "origin/#{merge_request.target_branch}..source/#{merge_request.source_branch}")
- else
- patch = merge_repo.git.format_patch(default_options({stdout: true}), "#{merge_request.target_branch}..#{merge_request.source_branch}")
- end
-
- return patch
+ patch = merge_repo.git.format_patch(default_options({stdout: true}), "origin/#{merge_request.target_branch}..source/#{merge_request.source_branch}")
end
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
@@ -125,34 +111,26 @@ module Gitlab
#
# Returns false if the merge produced conflicts
# Returns true otherwise
- def merge_in_satellite!(repo)
+ def merge_in_satellite!(repo, message = nil)
update_satellite_source_and_target!(repo)
+ message ||= "Merge branch '#{merge_request.source_branch}' into '#{merge_request.target_branch}'"
+
# merge the source branch into the satellite
# will raise CommandFailed when merge fails
- if merge_request.for_fork?
- repo.git.pull(default_options({no_ff: true}), 'source', merge_request.source_branch)
- else
- repo.git.pull(default_options({no_ff: true}), 'origin', merge_request.source_branch)
- end
+ repo.git.merge(default_options({no_ff: true}), "-m #{message}", "source/#{merge_request.source_branch}")
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
end
# Assumes a satellite exists that is a fresh clone of the projects repo, prepares satellite for merges, diffs etc
def update_satellite_source_and_target!(repo)
- if merge_request.for_fork?
- repo.remote_add('source', merge_request.source_project.repository.path_to_repo)
- repo.remote_fetch('source')
- repo.git.checkout(default_options({b: true}), merge_request.target_branch, "origin/#{merge_request.target_branch}")
- else
- repo.git.checkout(default_options, "#{merge_request.source_branch}")
- repo.git.checkout(default_options({t: true}), "origin/#{merge_request.target_branch}")
- end
+ repo.remote_add('source', merge_request.source_project.repository.path_to_repo)
+ repo.remote_fetch('source')
+ repo.git.checkout(default_options({b: true}), merge_request.target_branch, "origin/#{merge_request.target_branch}")
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
end
-
end
end
end