gogs/internal/gitutil/module.go

66 lines
2.8 KiB
Go

// Copyright 2020 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package gitutil
import (
"github.com/gogs/git-module"
)
// ModuleStore is the interface for Git operations.
//
// NOTE: All methods are sorted in alphabetical order.
type ModuleStore interface {
// AddRemote adds a new remote to the repository in given path.
RepoAddRemote(repoPath, name, url string, opts ...git.AddRemoteOptions) error
// RepoDiffNameOnly returns a list of changed files between base and head revisions
// of the repository in given path.
RepoDiffNameOnly(repoPath, base, head string, opts ...git.DiffNameOnlyOptions) ([]string, error)
// RepoLog returns a list of commits in the state of given revision of the repository
// in given path. The returned list is in reverse chronological order.
RepoLog(repoPath, rev string, opts ...git.LogOptions) ([]*git.Commit, error)
// RepoMergeBase returns merge base between base and head revisions of the repository
// in given path.
RepoMergeBase(repoPath, base, head string, opts ...git.MergeBaseOptions) (string, error)
// RepoRemoveRemote removes a remote from the repository in given path.
RepoRemoveRemote(repoPath, name string, opts ...git.RemoveRemoteOptions) error
// RepoTags returns a list of tags of the repository in given path.
RepoTags(repoPath string, opts ...git.TagsOptions) ([]string, error)
// GetPullRequestMeta gathers pull request metadata based on given head and base information.
PullRequestMeta(headPath, basePath, headBranch, baseBranch string) (*PullRequestMeta, error)
// ListTagsAfter returns a list of tags "after" (exclusive) given tag.
ListTagsAfter(repoPath, after string, limit int) (*TagsPage, error)
}
// module holds the real implementation.
type module struct{}
func (module) RepoAddRemote(repoPath, name, url string, opts ...git.AddRemoteOptions) error {
return git.RepoAddRemote(repoPath, name, url, opts...)
}
func (module) RepoDiffNameOnly(repoPath, base, head string, opts ...git.DiffNameOnlyOptions) ([]string, error) {
return git.RepoDiffNameOnly(repoPath, base, head, opts...)
}
func (module) RepoLog(repoPath, rev string, opts ...git.LogOptions) ([]*git.Commit, error) {
return git.RepoLog(repoPath, rev, opts...)
}
func (module) RepoMergeBase(repoPath, base, head string, opts ...git.MergeBaseOptions) (string, error) {
return git.RepoMergeBase(repoPath, base, head, opts...)
}
func (module) RepoRemoveRemote(repoPath, name string, opts ...git.RemoveRemoteOptions) error {
return git.RepoRemoveRemote(repoPath, name, opts...)
}
func (module) RepoTags(repoPath string, opts ...git.TagsOptions) ([]string, error) {
return git.RepoTags(repoPath, opts...)
}
// Module is a mockable interface for Git operations.
var Module ModuleStore = module{}