diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2016-12-06 13:47:24 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2016-12-06 13:47:24 +0300 |
commit | 65806ec632f2ea1e2087b7cdc64f13e6db49c88a (patch) | |
tree | 043e53302145a49cefe4fb4511b2da6b755a8c57 /app/services/git_operation_service.rb | |
parent | 444da6f47ed77172471a27386b969e6401d7cf84 (diff) |
Re-enable tests for update_branch_with_hooks and
Add back check if we're losing commits in a merge.
Diffstat (limited to 'app/services/git_operation_service.rb')
-rw-r--r-- | app/services/git_operation_service.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/services/git_operation_service.rb b/app/services/git_operation_service.rb index 88175c6931d..c34d4bde150 100644 --- a/app/services/git_operation_service.rb +++ b/app/services/git_operation_service.rb @@ -102,9 +102,20 @@ GitOperationService = Struct.new(:user, :repository) do raise Repository::CommitError.new('Failed to create commit') end - service.newrev = nextrev + branch = + repository.find_branch(ref[Gitlab::Git::BRANCH_REF_PREFIX.size..-1]) + + prevrev = if branch && + !repository.rugged.lookup(nextrev).parent_ids.empty? + repository.rugged.merge_base( + nextrev, branch.dereferenced_target.sha) + else + newrev + end - update_ref!(ref, nextrev, newrev) + update_ref!(ref, nextrev, prevrev) + + service.newrev = nextrev # If repo was empty expire cache repository.after_create if was_empty |