diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-03-08 19:09:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-08 19:09:31 +0800 |
commit | 6437d0180b97a26319b50c2e22927dac7c94fcdd (patch) | |
tree | 3d0d097e7f498e4b970065096e7500876d365a8b /internal/gitutil/module.go | |
parent | c65b5b9f84dee21dc362311b299694e8e00f6ac6 (diff) |
git: migrate to github.com/gogs/git-module@v1.0.0 (#5958)
* WIP
* Finish `internal/db/git_diff.go`
* FInish internal/db/mirror.go
* Finish internal/db/pull.go
* Finish internal/db/release.go
* Finish internal/db/repo.go
* Finish internal/db/repo_branch.go
* Finish internal/db/repo_editor.go
* Finish internal/db/update.go
* Save my work
* Add license header
* Compile!
* Merge master
* Finish internal/cmd/hook.go
* Finish internal/conf/static.go
* Finish internal/context/repo.go
* Finish internal/db/action.go
* Finish internal/db/git_diff.go
* Fix submodule URL inferring
* Finish internal/db/mirror.go
* Updat to beta.4
* css: update fonts
* Finish internal/db/pull.go
* Finish internal/db/release.go
* Finish internal/db/repo_branch.go
* Finish internal/db/wiki.go
* gitutil: enhance infer submodule UR
* Finish internal/route/api/v1/repo/commits.go
* mirror: only collect branch commits after sync
* mirror: fix tag support
* Finish internal/db/repo.go
* Finish internal/db/repo_editor.go
* Finish internal/db/update.go
* Finish internal/gitutil/pull_request.go
* Make it compile
* Finish internal/route/repo/setting.go
* Finish internal/route/repo/branch.go
* Finish internal/route/api/v1/repo/file.go
* Finish internal/route/repo/download.go
* Finish internal/route/repo/editor.go
* Use helper
* Finish internal/route/repo/issue.go
* Finish internal/route/repo/pull.go
* Finish internal/route/repo/release.go
* Finish internal/route/repo/repo.go
* Finish internal/route/repo/wiki.go
* Finish internal/route/repo/commit.go
* Finish internal/route/repo/view.go
* Finish internal/gitutil/tag.go
* go.sum
Diffstat (limited to 'internal/gitutil/module.go')
-rw-r--r-- | internal/gitutil/module.go | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/internal/gitutil/module.go b/internal/gitutil/module.go new file mode 100644 index 00000000..3c938041 --- /dev/null +++ b/internal/gitutil/module.go @@ -0,0 +1,90 @@ +// 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" +) + +// Moduler is the interface for Git operations. +// +// NOTE: All methods are sorted in alphabetically. +type Moduler 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) + + Utiler +} + +// Utiler is the interface for utility helpers implemented in this package. +// +// NOTE: All methods are sorted in alphabetically. +type Utiler interface { + // 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" (exlusive) given tag. + ListTagsAfter(repoPath, after string, limit int) (*TagsPage, error) +} + +// moduler is holds real implementation. +type moduler struct{} + +func (moduler) RepoAddRemote(repoPath, name, url string, opts ...git.AddRemoteOptions) error { + if MockModule.RepoAddRemote != nil { + return MockModule.RepoAddRemote(repoPath, name, url, opts...) + } + return git.RepoAddRemote(repoPath, name, url, opts...) +} + +func (moduler) RepoDiffNameOnly(repoPath, base, head string, opts ...git.DiffNameOnlyOptions) ([]string, error) { + if MockModule.RepoDiffNameOnly != nil { + return MockModule.RepoDiffNameOnly(repoPath, base, head, opts...) + } + return git.RepoDiffNameOnly(repoPath, base, head, opts...) +} + +func (moduler) RepoLog(repoPath, rev string, opts ...git.LogOptions) ([]*git.Commit, error) { + if MockModule.RepoLog != nil { + return MockModule.RepoLog(repoPath, rev, opts...) + } + return git.RepoLog(repoPath, rev, opts...) +} + +func (moduler) RepoMergeBase(repoPath, base, head string, opts ...git.MergeBaseOptions) (string, error) { + if MockModule.RepoMergeBase != nil { + return MockModule.RepoMergeBase(repoPath, base, head, opts...) + } + return git.RepoMergeBase(repoPath, base, head, opts...) +} + +func (moduler) RepoRemoveRemote(repoPath, name string, opts ...git.RemoveRemoteOptions) error { + if MockModule.RepoRemoveRemote != nil { + return MockModule.RepoRemoveRemote(repoPath, name, opts...) + } + return git.RepoRemoveRemote(repoPath, name, opts...) +} + +func (moduler) RepoTags(repoPath string, opts ...git.TagsOptions) ([]string, error) { + if MockModule.RepoTags != nil { + return MockModule.RepoTags(repoPath, opts...) + } + return git.RepoTags(repoPath, opts...) +} + +// Module is a mockable interface for Git operations. +var Module Moduler = moduler{} |