refactor: make git package handle all git operations (#38543)

before: gitrepo vs git packages
after: git package fully handle all git operations

by the way, use `WithRepo(repo)` instead of `WithDir(repo.Path)` to hide
path details.

benefits:

1. remove all unnecessary wrappers, developers no need to struggle with
"which package should be used"
2. simplify code, RepositoryFacade can (will) be used everywhere, all
"path" details are (will be) hidden
This commit is contained in:
wxiaoguang
2026-07-21 00:07:38 +08:00
committed by GitHub
parent b8977eeb47
commit 9dc04289aa
214 changed files with 859 additions and 1301 deletions
@@ -17,7 +17,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/json"
api "gitea.dev/modules/structs"
@@ -539,7 +539,7 @@ jobs:
assert.True(t, crossJob.IsExpanded)
// cross_job's children come from libRepo/lib.yaml - their source must be libRepo + libRepo's commit.
libHead, err := gitrepo.GetBranchCommitID(t.Context(), libRepo, libRepo.DefaultBranch)
libHead, err := git.GetBranchCommitID(t.Context(), libRepo, libRepo.DefaultBranch)
require.NoError(t, err)
callUtilJob := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{RunID: run.ID, JobID: "call_util_in_lib", ParentJobID: crossJob.ID})
assert.True(t, callUtilJob.IsReusableCaller)
+11 -11
View File
@@ -23,7 +23,7 @@ import (
user_model "gitea.dev/models/user"
actions_module "gitea.dev/modules/actions"
"gitea.dev/modules/commitstatus"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/json"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
@@ -477,7 +477,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -881,7 +881,7 @@ jobs:
assert.NoError(t, err)
// submit an approval review as user4
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -961,7 +961,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -1132,7 +1132,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -1223,7 +1223,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -1309,7 +1309,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -1439,7 +1439,7 @@ jobs:
assert.NotEmpty(t, addWorkflowToBaseResp)
// Get the commit ID of the dispatch branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
commit, err := gitRepo.GetBranchCommit(t.Context(), "dispatch")
@@ -1637,7 +1637,7 @@ jobs:
assert.Equal(t, workflows.Workflows[0].State, workflow.State)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
branch, err := git_model.GetBranch(t.Context(), repo.ID, repo.DefaultBranch)
@@ -1806,7 +1806,7 @@ jobs:
assert.NoError(t, err)
assert.NotEmpty(t, addWorkflowToBaseResp)
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -1884,7 +1884,7 @@ jobs:
assert.NoError(t, err)
assert.NotEmpty(t, addWorkflowToBaseResp)
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
+2 -2
View File
@@ -16,7 +16,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/json"
cargo_module "gitea.dev/modules/packages/cargo"
"gitea.dev/modules/setting"
@@ -76,7 +76,7 @@ func testPackageCargo(t *testing.T, _ *neturl.URL) {
assert.NoError(t, err)
readGitContent := func(t *testing.T, path string) string {
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
+3 -3
View File
@@ -15,7 +15,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/json"
api "gitea.dev/modules/structs"
issue_service "gitea.dev/services/issue"
@@ -375,7 +375,7 @@ func TestAPIPullReviewCommentResolveEndpoints(t *testing.T) {
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: pullIssue.PosterID})
require.NoError(t, pullIssue.LoadPullRequest(ctx))
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
require.NoError(t, err)
defer gitRepo.Close()
@@ -536,7 +536,7 @@ func testAPIPullReviewCommentReply(t *testing.T) {
require.NoError(t, pullIssue.LoadRepo(t.Context()))
require.NoError(t, pullIssue.LoadPullRequest(t.Context()))
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
gitRepo, err := gitrepo.OpenRepository(pullIssue.Repo)
gitRepo, err := git.OpenRepository(pullIssue.Repo)
require.NoError(t, err)
defer gitRepo.Close()
+4 -4
View File
@@ -20,7 +20,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/modules/test"
@@ -186,7 +186,7 @@ func TestAPICreateAndUpdateRelease(t *testing.T) {
session := loginUser(t, owner.LowerName)
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -237,7 +237,7 @@ func TestAPICreateProtectedTagRelease(t *testing.T) {
session := loginUser(t, writer.LowerName)
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -273,7 +273,7 @@ func TestAPICreateReleaseToDefaultBranchOnExistingTag(t *testing.T) {
session := loginUser(t, owner.LowerName)
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
+3 -3
View File
@@ -15,7 +15,7 @@ import (
unit_model "gitea.dev/models/unit"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
api "gitea.dev/modules/structs"
mirror_service "gitea.dev/services/mirror"
"gitea.dev/tests"
@@ -471,7 +471,7 @@ func TestAPIRepoEdit(t *testing.T) {
updatedRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: mirrorRepo.ID})
assert.Equal(t, "https://example.com/user2/repo1.git", updatedRepo.OriginalURL)
remoteURL, err := gitrepo.GitRemoteGetURL(ctx, updatedRepo, updatedMirror.GetRemoteName())
remoteURL, err := git.ParseRemoteAddressURL(ctx, updatedRepo, updatedMirror.GetRemoteName())
require.NoError(t, err)
require.NotNil(t, remoteURL.User)
assert.Equal(t, "existing-user", remoteURL.User.Username())
@@ -495,7 +495,7 @@ func TestAPIRepoEdit(t *testing.T) {
updatedRepo = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: mirrorRepo.ID})
assert.Equal(t, "https://example.com/user2/repo1.git", updatedRepo.OriginalURL)
remoteURL, err = gitrepo.GitRemoteGetURL(ctx, updatedRepo, updatedMirror.GetRemoteName())
remoteURL, err = git.ParseRemoteAddressURL(ctx, updatedRepo, updatedMirror.GetRemoteName())
require.NoError(t, err)
require.NotNil(t, remoteURL.User)
assert.Empty(t, remoteURL.User.Username())
@@ -16,7 +16,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/services/context"
@@ -153,7 +153,7 @@ func TestAPICreateFile(t *testing.T) {
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/repos/%s/%s/contents/%s", user2.Name, repo1.Name, treePath), &createFileOptions).
AddTokenAuth(token2)
resp := MakeRequest(t, req, http.StatusCreated)
gitRepo, _ := gitrepo.OpenRepository(repo1)
gitRepo, _ := git.OpenRepository(repo1)
defer gitRepo.Close()
commitID, _ := gitRepo.GetBranchCommitID(t.Context(), createFileOptions.NewBranchName)
lastCommit, _ := gitRepo.GetCommitByPath(t.Context(), treePath)
@@ -276,7 +276,7 @@ func TestAPICreateFile(t *testing.T) {
AddTokenAuth(token2)
resp = MakeRequest(t, req, http.StatusCreated)
emptyRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: "user2", Name: "empty-repo"}) // public repo
gitRepo, _ := gitrepo.OpenRepository(emptyRepo)
gitRepo, _ := git.OpenRepository(emptyRepo)
defer gitRepo.Close()
commitID, _ := gitRepo.GetBranchCommitID(t.Context(), createFileOptions.NewBranchName)
latestCommit, _ := gitRepo.GetCommitByPath(t.Context(), treePath)
@@ -15,7 +15,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/services/context"
@@ -136,7 +136,7 @@ func TestAPIUpdateFile(t *testing.T) {
req := NewRequestWithJSON(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/%s/contents/%s", user2.Name, repo1.Name, treePath), &updateFileOptions).
AddTokenAuth(token2)
resp := MakeRequest(t, req, http.StatusOK)
gitRepo, _ := gitrepo.OpenRepository(repo1)
gitRepo, _ := git.OpenRepository(repo1)
defer gitRepo.Close()
commitID, _ := gitRepo.GetBranchCommitID(t.Context(), updateFileOptions.NewBranchName)
lasCommit, _ := gitRepo.GetCommitByPath(t.Context(), treePath)
@@ -14,7 +14,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/services/context"
@@ -93,7 +93,7 @@ func TestAPIChangeFiles(t *testing.T) {
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/repos/%s/%s/contents", user2.Name, repo1.Name), &changeFilesOptions).
AddTokenAuth(token2)
resp := MakeRequest(t, req, http.StatusCreated)
gitRepo, _ := gitrepo.OpenRepository(repo1)
gitRepo, _ := git.OpenRepository(repo1)
defer gitRepo.Close()
commitID, _ := gitRepo.GetBranchCommitID(t.Context(), changeFilesOptions.NewBranchName)
createLasCommit, _ := gitRepo.GetCommitByPath(t.Context(), createTreePath)
+2 -2
View File
@@ -13,7 +13,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/json"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
@@ -42,7 +42,7 @@ func TestAPIGetRequestedFiles(t *testing.T) {
session = loginUser(t, user4.Name)
token4 := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
gitRepo, err := gitrepo.OpenRepository(repo1)
gitRepo, err := git.OpenRepository(repo1)
assert.NoError(t, err)
defer gitRepo.Close()
lastCommit, _ := gitRepo.GetCommitByPath(t.Context(), "README.md")
@@ -14,7 +14,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
repo_service "gitea.dev/services/repository"
@@ -73,7 +73,7 @@ func testAPIGetContentsList(t *testing.T, u *url.URL) {
token4 := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadRepository)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo1)
gitRepo, err := git.OpenRepository(repo1)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -15,7 +15,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
repo_service "gitea.dev/services/repository"
@@ -78,7 +78,7 @@ func testAPIGetContents(t *testing.T, _ *url.URL) {
token4 := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadRepository)
// Get the commit ID of the default branch
gitRepo, err := gitrepo.OpenRepository(repo1)
gitRepo, err := git.OpenRepository(repo1)
require.NoError(t, err)
defer gitRepo.Close()
+4 -4
View File
@@ -12,7 +12,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
api "gitea.dev/modules/structs"
"gitea.dev/tests"
@@ -28,10 +28,10 @@ func TestAPIGitTags(t *testing.T) {
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadRepository)
// Set up git config for the tagger
_ = gitrepo.ManagedConfigSet(t.Context(), repo, "user.name", user.Name)
_ = gitrepo.ManagedConfigSet(t.Context(), repo, "user.email", user.Email)
_ = git.ManagedConfigSet(t.Context(), repo, "user.name", user.Name)
_ = git.ManagedConfigSet(t.Context(), repo, "user.email", user.Email)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commit, _ := gitRepo.GetBranchCommit(t.Context(), "master")
@@ -12,7 +12,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/tests"
"github.com/stretchr/testify/assert"
@@ -39,7 +39,7 @@ func TestChangeDefaultBranch(t *testing.T) {
session.MakeRequest(t, req, http.StatusNotFound)
}
func checkDivergence(t *testing.T, session *TestSession, branchesURL, expectedDefaultBranch string, expectedBranchToDivergence map[string]*gitrepo.DivergeObject) {
func checkDivergence(t *testing.T, session *TestSession, branchesURL, expectedDefaultBranch string, expectedBranchToDivergence map[string]*git.DivergeObject) {
req := NewRequest(t, "GET", branchesURL)
resp := session.MakeRequest(t, req, http.StatusOK)
@@ -88,7 +88,7 @@ func TestChangeDefaultBranchDivergence(t *testing.T) {
settingsBranchesURL := fmt.Sprintf("/%s/%s/settings/branches", owner.Name, repo.Name)
// check branch divergence before switching default branch
expectedBranchToDivergenceBefore := map[string]*gitrepo.DivergeObject{
expectedBranchToDivergenceBefore := map[string]*git.DivergeObject{
"not-signed": {
Ahead: 0,
Behind: 0,
@@ -113,7 +113,7 @@ func TestChangeDefaultBranchDivergence(t *testing.T) {
session.MakeRequest(t, req, http.StatusSeeOther)
// check branch divergence after switching default branch
expectedBranchToDivergenceAfter := map[string]*gitrepo.DivergeObject{
expectedBranchToDivergenceAfter := map[string]*git.DivergeObject{
"master": {
Ahead: 1,
Behind: 0,
+2 -2
View File
@@ -13,8 +13,8 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/git"
"gitea.dev/modules/git/gitcmd"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/test"
"gitea.dev/modules/util"
"gitea.dev/routers/common"
@@ -182,7 +182,7 @@ func TestResolveRefWithSuffixContract(t *testing.T) {
defer tests.PrepareTestEnv(t)()
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 31})
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
require.NoError(t, err)
defer gitRepo.Close()
+1 -2
View File
@@ -20,7 +20,6 @@ import (
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/git"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/test"
"gitea.dev/modules/translation"
"gitea.dev/modules/util"
@@ -221,7 +220,7 @@ func testEditorWebGitCommitEmail(t *testing.T) {
require.True(t, user.KeepEmailPrivate)
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, _ := gitrepo.OpenRepository(repo1)
gitRepo, _ := git.OpenRepository(repo1)
defer gitRepo.Close()
getLastCommit := func(t *testing.T) *git.Commit {
c, err := gitRepo.GetBranchCommit(t.Context(), "master")
@@ -169,7 +169,7 @@ func doGitCloneFail(u *url.URL) func(*testing.T) {
func doGitInitTestRepository(dstPath string) func(*testing.T) {
return func(t *testing.T) {
// Init repository in dstPath
assert.NoError(t, git.InitRepository(t.Context(), dstPath, false, git.Sha1ObjectFormat.Name()))
assert.NoError(t, git.InitRepositoryLocal(t.Context(), dstPath, false, git.Sha1ObjectFormat.Name()))
// forcibly set default branch to master
_, _, err := gitcmd.NewCommand("symbolic-ref", "HEAD", git.BranchPrefix+"master").
WithDir(dstPath).
+2 -3
View File
@@ -17,7 +17,6 @@ import (
user_model "gitea.dev/models/user"
"gitea.dev/modules/git"
"gitea.dev/modules/git/gitcmd"
"gitea.dev/modules/gitrepo"
files_service "gitea.dev/services/repository/files"
"github.com/stretchr/testify/assert"
@@ -44,7 +43,7 @@ func TestDataAsyncDoubleRead_Issue29101(t *testing.T) {
sha := resp.Commit.SHA
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
commit, err := gitRepo.GetCommit(t.Context(), sha)
@@ -219,7 +218,7 @@ func TestAgitReviewStaleness(t *testing.T) {
// For AGit PRs, HeadCommitID must be loaded from git references
baseRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
baseGitRepo, err := gitrepo.OpenRepository(baseRepo)
baseGitRepo, err := git.OpenRepository(baseRepo)
assert.NoError(t, err)
defer baseGitRepo.Close()
+2 -2
View File
@@ -24,7 +24,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
"gitea.dev/modules/structs"
"gitea.dev/modules/test"
@@ -336,7 +336,7 @@ func Test_MigrateFromGiteaToGitea(t *testing.T) {
assert.False(t, pr13.HasMerged)
assert.True(t, pr13.Issue.IsLocked)
gitRepo, err := gitrepo.OpenRepository(migratedRepo)
gitRepo, err := git.OpenRepository(migratedRepo)
require.NoError(t, err)
defer gitRepo.Close()
+2 -2
View File
@@ -15,7 +15,7 @@ import (
"gitea.dev/models/unit"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/migration"
"gitea.dev/modules/setting"
"gitea.dev/modules/test"
@@ -66,7 +66,7 @@ func TestMirrorPull(t *testing.T) {
assert.True(t, slices.ContainsFunc(mirrorRepo.Units, func(u *repo_model.RepoUnit) bool { return u.Type == unit.TypeReleases }))
assert.True(t, slices.ContainsFunc(mirrorRepo.Units, func(u *repo_model.RepoUnit) bool { return u.Type == unit.TypeWiki }))
gitRepo, err := gitrepo.OpenRepository(repo)
gitRepo, err := git.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
+5 -5
View File
@@ -15,7 +15,7 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
"gitea.dev/modules/setting"
"gitea.dev/modules/test"
"gitea.dev/services/migrations"
@@ -60,14 +60,14 @@ func testMirrorPush(t *testing.T, u *url.URL) {
ok := mirror_service.SyncPushMirror(t.Context(), mirrors[0].ID)
assert.True(t, ok)
srcGitRepo, err := gitrepo.OpenRepository(srcRepo)
srcGitRepo, err := git.OpenRepository(srcRepo)
assert.NoError(t, err)
defer srcGitRepo.Close()
srcCommit, err := srcGitRepo.GetBranchCommit(t.Context(), "master")
assert.NoError(t, err)
mirrorGitRepo, err := gitrepo.OpenRepository(mirrorRepo)
mirrorGitRepo, err := git.OpenRepository(mirrorRepo)
assert.NoError(t, err)
defer mirrorGitRepo.Close()
@@ -101,9 +101,9 @@ func testMirrorPushWikiDefaultBranchMismatch(t *testing.T, u *url.URL) {
mirrorRepo.DefaultBranch = "mirror-head"
assert.NoError(t, repo_model.UpdateRepositoryColsNoAutoTime(t.Context(), mirrorRepo, "default_branch"))
wikiCommitID, err := gitrepo.GetBranchCommitID(t.Context(), mirrorRepo.WikiStorageRepo(), mirrorRepo.DefaultWikiBranch)
wikiCommitID, err := git.GetBranchCommitID(t.Context(), mirrorRepo.WikiStorageRepo(), mirrorRepo.DefaultWikiBranch)
assert.NoError(t, err)
assert.NoError(t, gitrepo.CreateBranch(t.Context(), mirrorRepo.WikiStorageRepo(), "mirror-head", wikiCommitID))
assert.NoError(t, git.CreateBranch(t.Context(), mirrorRepo.WikiStorageRepo(), "mirror-head", wikiCommitID))
session := loginUser(t, user.Name)
+3 -4
View File
@@ -29,7 +29,6 @@ import (
"gitea.dev/modules/commitstatus"
"gitea.dev/modules/git"
"gitea.dev/modules/git/gitcmd"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/json"
"gitea.dev/modules/queue"
"gitea.dev/modules/setting"
@@ -838,7 +837,7 @@ func TestPullAutoMergeAfterCommitStatusSucceed(t *testing.T) {
assert.Empty(t, pr.MergedCommitID)
// update commit status to success, then it should be merged automatically
baseGitRepo, err := gitrepo.OpenRepository(baseRepo)
baseGitRepo, err := git.OpenRepository(baseRepo)
assert.NoError(t, err)
sha, err := baseGitRepo.GetRefCommitID(t.Context(), pr.GetGitHeadRefName())
assert.NoError(t, err)
@@ -910,7 +909,7 @@ func TestPullAutoMergeAfterCommitStatusSucceedAndApproval(t *testing.T) {
assert.Empty(t, pr.MergedCommitID)
// update commit status to success, then it should be merged automatically
baseGitRepo, err := gitrepo.OpenRepository(baseRepo)
baseGitRepo, err := git.OpenRepository(baseRepo)
assert.NoError(t, err)
sha, err := baseGitRepo.GetRefCommitID(t.Context(), pr.GetGitHeadRefName())
assert.NoError(t, err)
@@ -1023,7 +1022,7 @@ func TestPullAutoMergeAfterCommitStatusSucceedAndApprovalForAgitFlow(t *testing.
assert.Empty(t, pr.MergedCommitID)
// update commit status to success, then it should be merged automatically
baseGitRepo, err := gitrepo.OpenRepository(baseRepo)
baseGitRepo, err := git.OpenRepository(baseRepo)
assert.NoError(t, err)
sha, err := baseGitRepo.GetRefCommitID(t.Context(), pr.GetGitHeadRefName())
assert.NoError(t, err)
+1 -2
View File
@@ -18,7 +18,6 @@ import (
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/git"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/test"
issue_service "gitea.dev/services/issue"
repo_service "gitea.dev/services/repository"
@@ -100,7 +99,7 @@ func TestPullView_CodeOwner(t *testing.T) {
// capture the current PR head ref so we can wait for the async
// refs/pull/N/head sync triggered by the next push to complete
baseGitRepo, err := gitrepo.OpenRepository(repo)
baseGitRepo, err := git.OpenRepository(repo)
require.NoError(t, err)
defer baseGitRepo.Close()
headRefBefore, err := baseGitRepo.GetRefCommitID(t.Context(), pr.GetGitHeadRefName())
+7 -7
View File
@@ -17,7 +17,7 @@ import (
"gitea.dev/models/unit"
"gitea.dev/models/unittest"
user_model "gitea.dev/models/user"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/git"
pull_service "gitea.dev/services/pull"
repo_service "gitea.dev/services/repository"
files_service "gitea.dev/services/repository/files"
@@ -36,7 +36,7 @@ func TestAPIPullUpdate(t *testing.T) {
require.NoError(t, pr.LoadIssue(t.Context()))
// Test GetDiverging
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err := git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
require.NoError(t, err)
assert.Equal(t, 1, diffCount.Behind)
assert.Equal(t, 1, diffCount.Ahead)
@@ -50,7 +50,7 @@ func TestAPIPullUpdate(t *testing.T) {
session.MakeRequest(t, req, http.StatusOK)
// Test GetDiverging after update
diffCount, err = gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err = git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
require.NoError(t, err)
assert.Equal(t, 0, diffCount.Behind)
assert.Equal(t, 2, diffCount.Ahead)
@@ -84,7 +84,7 @@ func TestAPIPullUpdatePublicOnlyToken(t *testing.T) {
MakeRequest(t, req, http.StatusNotFound)
// the head branch must still be outdated (no push happened)
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err := git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
require.NoError(t, err)
assert.Equal(t, 1, diffCount.Behind)
@@ -133,7 +133,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
assert.NoError(t, pr.LoadBaseRepo(t.Context()))
// Test GetDiverging
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err := git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
assert.NoError(t, err)
assert.Equal(t, 1, diffCount.Behind)
assert.Equal(t, 1, diffCount.Ahead)
@@ -168,7 +168,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
session.MakeRequest(t, req, http.StatusOK)
// Test GetDiverging after update
diffCount, err = gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err = git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
assert.NoError(t, err)
assert.Equal(t, 0, diffCount.Behind)
assert.Equal(t, 1, diffCount.Ahead)
@@ -208,7 +208,7 @@ func TestAPIPullUpdateStyleSettings(t *testing.T) {
// merge update produces a merge commit on top of the head commit (Ahead=2),
// rebase update would replay the head commit alone (Ahead=1).
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
diffCount, err := git.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
require.NoError(t, err)
assert.Equal(t, 0, diffCount.Behind)
assert.Equal(t, 2, diffCount.Ahead)
+9 -10
View File
@@ -26,7 +26,6 @@ import (
"gitea.dev/models/webhook"
"gitea.dev/modules/commitstatus"
"gitea.dev/modules/git"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/json"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
@@ -410,7 +409,7 @@ func Test_WebhookPushDevBranch(t *testing.T) {
assert.Empty(t, payloads)
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(repo1)
gitRepo, err := git.OpenRepository(repo1)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -461,7 +460,7 @@ func Test_WebhookPushToNewBranch(t *testing.T) {
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "push", "new_branch")
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(repo1)
gitRepo, err := git.OpenRepository(repo1)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -926,7 +925,7 @@ func Test_WebhookStatus(t *testing.T) {
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
commitID, err := gitRepo1.GetBranchCommitID(t.Context(), repo1.DefaultBranch)
assert.NoError(t, err)
@@ -999,7 +998,7 @@ func Test_WebhookWorkflowJob(t *testing.T) {
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
runner := newMockRunner()
@@ -1191,7 +1190,7 @@ func testWorkflowRunEvents(t *testing.T, webhookData *workflowRunWebhook) {
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
// 2.2 trigger the webhooks
@@ -1316,7 +1315,7 @@ func testWorkflowRunEventsOnRerun(t *testing.T, webhookData *workflowRunWebhook)
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
// 2.2 trigger the webhooks
@@ -1486,7 +1485,7 @@ func testWorkflowRunEventsOnCancellingAbandonedRun(t *testing.T, webhookData *wo
testAPICreateWebhookForRepo(t, session, "user2", repoName, webhookData.URL, "workflow_run")
ctx := t.Context()
gitRepo, err := gitrepo.OpenRepository(testRepo)
gitRepo, err := git.OpenRepository(testRepo)
assert.NoError(t, err)
// 2.2 trigger the webhooks
@@ -1704,7 +1703,7 @@ func testWebhookWorkflowRun(t *testing.T, webhookData *workflowRunWebhook) {
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
runner := newMockRunner()
@@ -1805,7 +1804,7 @@ func testWebhookWorkflowRunDepthLimit(t *testing.T, webhookData *workflowRunWebh
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
gitRepo1, err := gitrepo.OpenRepository(repo1)
gitRepo1, err := git.OpenRepository(repo1)
assert.NoError(t, err)
// 2. trigger the webhooks
+5 -6
View File
@@ -14,7 +14,6 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/modules/git"
"gitea.dev/modules/gitrepo"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/services/contexttest"
@@ -362,7 +361,7 @@ func TestChangeRepoFilesForCreate(t *testing.T) {
// asserts
assert.NoError(t, err)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commitID, _ := gitRepo.GetBranchCommitID(t.Context(), opts.NewBranch)
@@ -399,7 +398,7 @@ func TestChangeRepoFilesForUpdate(t *testing.T) {
// asserts
assert.NoError(t, err)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commit, _ := gitRepo.GetBranchCommit(t.Context(), opts.NewBranch)
@@ -435,7 +434,7 @@ func TestChangeRepoFilesForUpdateWithFileMove(t *testing.T) {
// asserts
assert.NoError(t, err)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commit, _ := gitRepo.GetBranchCommit(t.Context(), opts.NewBranch)
@@ -481,7 +480,7 @@ func TestChangeRepoFilesForUpdateWithFileRename(t *testing.T) {
// asserts
assert.NoError(t, err)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commit, _ := gitRepo.GetBranchCommit(t.Context(), repo.DefaultBranch)
@@ -518,7 +517,7 @@ func TestChangeRepoFilesWithoutBranchNames(t *testing.T) {
// asserts
assert.NoError(t, err)
gitRepo, _ := gitrepo.OpenRepository(repo)
gitRepo, _ := git.OpenRepository(repo)
defer gitRepo.Close()
commit, _ := gitRepo.GetBranchCommit(t.Context(), repo.DefaultBranch)