diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2017-09-08 14:00:53 +0200 |
---|---|---|
committer | Jacob Vosmaer <jacob@gitlab.com> | 2017-09-15 16:39:20 +0200 |
commit | 902b5347dcbb8d93d5b055d89d8d0414fdeade74 (patch) | |
tree | 5e7f71da382b231d5322539941ea4476ca44c6e2 /app | |
parent | 2203e8fc35b12c19a9a0be1c2c63256047a3c5ff (diff) | |
download | gitlab-ce-902b5347dcbb8d93d5b055d89d8d0414fdeade74.tar.gz |
Prepare Repository#merge for migration to Gitalyoperation-service-merge
Diffstat (limited to 'app')
-rw-r--r-- | app/models/repository.rb | 57 | ||||
-rw-r--r-- | app/services/merge_requests/merge_service.rb | 10 |
2 files changed, 22 insertions, 45 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb index f2b54705e7b..af9911ea045 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -768,17 +768,23 @@ class Repository multi_action(**options) end - def with_branch(user, *args) - result = Gitlab::Git::OperationService.new(user, raw_repository).with_branch(*args) do |start_commit| - yield start_commit - end + def with_cache_hooks + result = yield - newrev, should_run_after_create, should_run_after_create_branch = result + return unless result - after_create if should_run_after_create - after_create_branch if should_run_after_create_branch + after_create if result.repo_created? + after_create_branch if result.branch_created? - newrev + result.newrev + end + + def with_branch(user, *args) + with_cache_hooks do + Gitlab::Git::OperationService.new(user, raw_repository).with_branch(*args) do |start_commit| + yield start_commit + end + end end # rubocop:disable Metrics/ParameterLists @@ -843,30 +849,13 @@ class Repository end end - def merge(user, source, merge_request, options = {}) - with_branch( - user, - merge_request.target_branch) do |start_commit| - our_commit = start_commit.sha - their_commit = source - - raise 'Invalid merge target' unless our_commit - raise 'Invalid merge source' unless their_commit - - merge_index = rugged.merge_commits(our_commit, their_commit) - break if merge_index.conflicts? - - actual_options = options.merge( - parents: [our_commit, their_commit], - tree: merge_index.write_tree(rugged) - ) - - commit_id = create_commit(actual_options) - merge_request.update(in_progress_merge_commit_sha: commit_id) - commit_id + def merge(user, source_sha, merge_request, message) + with_cache_hooks do + raw_repository.merge(user, source_sha, merge_request.target_branch, message) do |commit_id| + merge_request.update(in_progress_merge_commit_sha: commit_id) + nil # Return value does not matter. + end end - rescue Gitlab::Git::CommitError # when merge_index.conflicts? - false end def revert( @@ -1157,12 +1146,6 @@ class Repository Gitlab::Metrics.add_event(event, { path: full_path }.merge(tags)) end - def create_commit(params = {}) - params[:message].delete!("\r") - - Rugged::Commit.create(rugged, params) - end - def last_commit_for_path_by_gitaly(sha, path) c = raw_repository.gitaly_commit_client.last_commit_for_path(sha, path) commit(c) diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb index b2b6c5627fb..07cbd8f92a9 100644 --- a/app/services/merge_requests/merge_service.rb +++ b/app/services/merge_requests/merge_service.rb @@ -38,15 +38,9 @@ module MergeRequests private def commit - committer = repository.user_to_committer(current_user) + message = params[:commit_message] || merge_request.merge_commit_message - options = { - message: params[:commit_message] || merge_request.merge_commit_message, - author: committer, - committer: committer - } - - commit_id = repository.merge(current_user, source, merge_request, options) + commit_id = repository.merge(current_user, source, merge_request, message) raise MergeError, 'Conflicts detected during merge' unless commit_id |