aboutsummaryrefslogtreecommitdiff
path: root/internal/gitutil/module.go
diff options
context:
space:
mode:
authorᴜɴᴋɴᴡᴏɴ <u@gogs.io>2020-03-08 19:09:31 +0800
committerGitHub <noreply@github.com>2020-03-08 19:09:31 +0800
commit6437d0180b97a26319b50c2e22927dac7c94fcdd (patch)
tree3d0d097e7f498e4b970065096e7500876d365a8b /internal/gitutil/module.go
parentc65b5b9f84dee21dc362311b299694e8e00f6ac6 (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.go90
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{}