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