Add Gitaly migration points for branch/tag create/delete
This commit is contained in:
parent
6523ba1d5a
commit
9d88ad45d2
|
@ -166,32 +166,25 @@ class Repository
|
|||
end
|
||||
|
||||
def add_branch(user, branch_name, ref)
|
||||
newrev = commit(ref).try(:sha)
|
||||
|
||||
return false unless newrev
|
||||
|
||||
Gitlab::Git::OperationService.new(user, raw_repository).add_branch(branch_name, newrev)
|
||||
branch = raw_repository.add_branch(branch_name, committer: user, target: ref)
|
||||
|
||||
after_create_branch
|
||||
find_branch(branch_name)
|
||||
|
||||
branch
|
||||
rescue Gitlab::Git::Repository::InvalidRef
|
||||
false
|
||||
end
|
||||
|
||||
def add_tag(user, tag_name, target, message = nil)
|
||||
newrev = commit(target).try(:id)
|
||||
options = { message: message, tagger: user_to_committer(user) } if message
|
||||
|
||||
return false unless newrev
|
||||
|
||||
Gitlab::Git::OperationService.new(user, raw_repository).add_tag(tag_name, newrev, options)
|
||||
|
||||
find_tag(tag_name)
|
||||
raw_repository.add_tag(tag_name, committer: user, target: target, message: message)
|
||||
rescue Gitlab::Git::Repository::InvalidRef
|
||||
false
|
||||
end
|
||||
|
||||
def rm_branch(user, branch_name)
|
||||
before_remove_branch
|
||||
branch = find_branch(branch_name)
|
||||
|
||||
Gitlab::Git::OperationService.new(user, raw_repository).rm_branch(branch)
|
||||
raw_repository.rm_branch(branch_name, committer: user)
|
||||
|
||||
after_remove_branch
|
||||
true
|
||||
|
@ -199,9 +192,8 @@ class Repository
|
|||
|
||||
def rm_tag(user, tag_name)
|
||||
before_remove_tag
|
||||
tag = find_tag(tag_name)
|
||||
|
||||
Gitlab::Git::OperationService.new(user, raw_repository).rm_tag(tag)
|
||||
raw_repository.rm_tag(tag_name, committer: user)
|
||||
|
||||
after_remove_tag
|
||||
true
|
||||
|
|
|
@ -605,6 +605,49 @@ module Gitlab
|
|||
# TODO: implement this method
|
||||
end
|
||||
|
||||
def add_branch(branch_name, committer:, target:)
|
||||
target_object = Ref.dereference_object(lookup(target))
|
||||
raise InvalidRef.new("target not found: #{target}") unless target_object
|
||||
|
||||
OperationService.new(committer, self).add_branch(branch_name, target_object.oid)
|
||||
find_branch(branch_name)
|
||||
rescue Rugged::ReferenceError => ex
|
||||
raise InvalidRef, ex
|
||||
end
|
||||
|
||||
def add_tag(tag_name, committer:, target:, message: nil)
|
||||
target_object = Ref.dereference_object(lookup(target))
|
||||
raise InvalidRef.new("target not found: #{target}") unless target_object
|
||||
|
||||
committer = Committer.from_user(committer) if committer.is_a?(User)
|
||||
|
||||
options = nil # Use nil, not the empty hash. Rugged cares about this.
|
||||
if message
|
||||
options = {
|
||||
message: message,
|
||||
tagger: Gitlab::Git.committer_hash(email: committer.email, name: committer.name)
|
||||
}
|
||||
end
|
||||
|
||||
OperationService.new(committer, self).add_tag(tag_name, target_object.oid, options)
|
||||
|
||||
find_tag(tag_name)
|
||||
rescue Rugged::ReferenceError => ex
|
||||
raise InvalidRef, ex
|
||||
end
|
||||
|
||||
def rm_branch(branch_name, committer:)
|
||||
OperationService.new(committer, self).rm_branch(find_branch(branch_name))
|
||||
end
|
||||
|
||||
def rm_tag(tag_name, committer:)
|
||||
OperationService.new(committer, self).rm_tag(find_tag(tag_name))
|
||||
end
|
||||
|
||||
def find_tag(name)
|
||||
tags.find { |tag| tag.name == name }
|
||||
end
|
||||
|
||||
# Delete the specified branch from the repository
|
||||
#
|
||||
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/476
|
||||
|
|
Loading…
Reference in New Issue