diff options
author | Sören Tempel <soeren+git@soeren-tempel.net> | 2020-05-10 23:46:26 +0200 |
---|---|---|
committer | Sören Tempel <soeren+git@soeren-tempel.net> | 2020-05-11 16:14:25 +0200 |
commit | 04c5f3dae84c8df515cc1996e12263db0b6011d3 (patch) | |
tree | 5848d5fe70b4eace91d1d41eba5cb029401492d2 /community | |
parent | 7c5757768dc4f8c7b37e51db17d8685495cc2fc2 (diff) | |
download | aports-04c5f3dae84c8df515cc1996e12263db0b6011d3.tar.bz2 aports-04c5f3dae84c8df515cc1996e12263db0b6011d3.tar.xz |
community/gitea: attempt to fix check() on armhf
Diffstat (limited to 'community')
3 files changed, 420 insertions, 1 deletions
diff --git a/community/gitea/0001-Slight-performance-changes-to-integrations-git_test..patch b/community/gitea/0001-Slight-performance-changes-to-integrations-git_test..patch new file mode 100644 index 0000000000..fb2ba228c2 --- /dev/null +++ b/community/gitea/0001-Slight-performance-changes-to-integrations-git_test..patch @@ -0,0 +1,132 @@ +From d26aee38307b84d6e3001fd7e531a0d67a804267 Mon Sep 17 00:00:00 2001 +From: zeripath <art27@cantab.net> +Date: Mon, 27 Apr 2020 12:20:09 +0100 +Subject: [PATCH] Slight performance changes to integrations/git_test.go + (#11227) + +* switch to use pseudorandom generator and stop cloning in pushcreate + +Signed-off-by: Andrew Thornton <art27@cantab.net> + +* Add some logging of BranchProtectPRMerge + +Signed-off-by: Andrew Thornton <art27@cantab.net> + +* Stop running prepareTestEnv so often for TestAPIGetBranch + +Signed-off-by: Andrew Thornton <art27@cantab.net> +--- + integrations/api_branch_test.go | 3 +-- + integrations/git_test.go | 35 ++++++++++++++++++++++++--------- + 2 files changed, 27 insertions(+), 11 deletions(-) + +diff --git a/integrations/api_branch_test.go b/integrations/api_branch_test.go +index 8417ab36c..acf7525f8 100644 +--- a/integrations/api_branch_test.go ++++ b/integrations/api_branch_test.go +@@ -14,8 +14,6 @@ import ( + ) + + func testAPIGetBranch(t *testing.T, branchName string, exists bool) { +- defer prepareTestEnv(t)() +- + session := loginUser(t, "user2") + token := getTokenForLoggedInUser(t, session) + req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branches/%s?token=%s", branchName, token) +@@ -88,6 +86,7 @@ func testAPIDeleteBranch(t *testing.T, branchName string, expectedHTTPStatus int + } + + func TestAPIGetBranch(t *testing.T) { ++ defer prepareTestEnv(t)() + for _, test := range []struct { + BranchName string + Exists bool +diff --git a/integrations/git_test.go b/integrations/git_test.go +index 8813f34be..69253d397 100644 +--- a/integrations/git_test.go ++++ b/integrations/git_test.go +@@ -5,9 +5,9 @@ + package integrations + + import ( +- "crypto/rand" + "fmt" + "io/ioutil" ++ "math/rand" + "net/http" + "net/url" + "os" +@@ -70,6 +70,7 @@ func testGit(t *testing.T, u *url.URL) { + + t.Run("BranchProtectMerge", doBranchProtectPRMerge(&httpContext, dstPath)) + t.Run("MergeFork", func(t *testing.T) { ++ defer PrintCurrentTest(t)() + t.Run("CreatePRAndMerge", doMergeFork(httpContext, forkedUserCtx, "master", httpContext.Username+":master")) + rawTest(t, &forkedUserCtx, little, big, littleLFS, bigLFS) + mediaTest(t, &forkedUserCtx, little, big, littleLFS, bigLFS) +@@ -109,6 +110,7 @@ func testGit(t *testing.T, u *url.URL) { + + t.Run("BranchProtectMerge", doBranchProtectPRMerge(&sshContext, dstPath)) + t.Run("MergeFork", func(t *testing.T) { ++ defer PrintCurrentTest(t)() + t.Run("CreatePRAndMerge", doMergeFork(sshContext, forkedUserCtx, "master", sshContext.Username+":master")) + rawTest(t, &forkedUserCtx, little, big, littleLFS, bigLFS) + mediaTest(t, &forkedUserCtx, little, big, littleLFS, bigLFS) +@@ -291,17 +293,34 @@ func doCommitAndPush(t *testing.T, size int, repoPath, prefix string) string { + + func generateCommitWithNewData(size int, repoPath, email, fullName, prefix string) (string, error) { + //Generate random file +- data := make([]byte, size) +- _, err := rand.Read(data) +- if err != nil { +- return "", err ++ bufSize := 4 * 1024 ++ if bufSize > size { ++ bufSize = size + } ++ ++ buffer := make([]byte, bufSize) ++ + tmpFile, err := ioutil.TempFile(repoPath, prefix) + if err != nil { + return "", err + } + defer tmpFile.Close() +- _, err = tmpFile.Write(data) ++ written := 0 ++ for written < size { ++ n := size - written ++ if n > bufSize { ++ n = bufSize ++ } ++ _, err := rand.Read(buffer[:n]) ++ if err != nil { ++ return "", err ++ } ++ n, err = tmpFile.Write(buffer[:n]) ++ if err != nil { ++ return "", err ++ } ++ written += n ++ } + if err != nil { + return "", err + } +@@ -411,6 +430,7 @@ func doProtectBranch(ctx APITestContext, branch string, userToWhitelist string) + + func doMergeFork(ctx, baseCtx APITestContext, baseBranch, headBranch string) func(t *testing.T) { + return func(t *testing.T) { ++ defer PrintCurrentTest(t)() + var pr api.PullRequest + var err error + t.Run("CreatePullRequest", func(t *testing.T) { +@@ -485,9 +505,6 @@ func doPushCreate(ctx APITestContext, u *url.URL) func(t *testing.T) { + tmpDir, err := ioutil.TempDir("", ctx.Reponame) + assert.NoError(t, err) + +- _, err = git.NewCommand("clone", u.String()).RunInDir(tmpDir) +- assert.Error(t, err) +- + err = git.InitRepository(tmpDir, false) + assert.NoError(t, err) + diff --git a/community/gitea/0002-Make-the-PushCreate-test-declarative-11229.patch b/community/gitea/0002-Make-the-PushCreate-test-declarative-11229.patch new file mode 100644 index 0000000000..02983d7ada --- /dev/null +++ b/community/gitea/0002-Make-the-PushCreate-test-declarative-11229.patch @@ -0,0 +1,282 @@ +From 1f0b797ddc139c3241c9b9694f0666a28ab41d80 Mon Sep 17 00:00:00 2001 +From: zeripath <art27@cantab.net> +Date: Tue, 28 Apr 2020 09:32:23 +0100 +Subject: [PATCH] Make the PushCreate test declarative (#11229) + +Reduce the code duplication in the PushCreate test and switch +to a declarative format. + +* Instead of explicitly creating the repository re-use functions from the other declarative tests and add comments +* Ensure that the test repository is deleted at the end of test +* Slightly reorder the sub-tests + +Also reduce the code duplication in MergeFork and add some comments there too and make doGitCloneFail be self-contained. + +Signed-off-by: Andrew Thornton art27@cantab.net +--- + .../git_helper_for_declarative_test.go | 9 +- + integrations/git_test.go | 155 +++++++----------- + integrations/ssh_key_test.go | 10 +- + 3 files changed, 72 insertions(+), 102 deletions(-) + +diff --git a/integrations/git_helper_for_declarative_test.go b/integrations/git_helper_for_declarative_test.go +index 5838b9e51..13b3e92c1 100644 +--- a/integrations/git_helper_for_declarative_test.go ++++ b/integrations/git_helper_for_declarative_test.go +@@ -115,10 +115,13 @@ func doGitClone(dstLocalPath string, u *url.URL) func(*testing.T) { + } + } + +-func doGitCloneFail(dstLocalPath string, u *url.URL) func(*testing.T) { ++func doGitCloneFail(u *url.URL) func(*testing.T) { + return func(t *testing.T) { +- assert.Error(t, git.Clone(u.String(), dstLocalPath, git.CloneRepoOptions{})) +- assert.False(t, com.IsExist(filepath.Join(dstLocalPath, "README.md"))) ++ tmpDir, err := ioutil.TempDir("", "doGitCloneFail") ++ assert.NoError(t, err) ++ defer os.RemoveAll(tmpDir) ++ assert.Error(t, git.Clone(u.String(), tmpDir, git.CloneRepoOptions{})) ++ assert.False(t, com.IsExist(filepath.Join(tmpDir, "README.md"))) + } + } + +diff --git a/integrations/git_test.go b/integrations/git_test.go +index 69253d397..7dd0bc056 100644 +--- a/integrations/git_test.go ++++ b/integrations/git_test.go +@@ -433,133 +433,104 @@ func doMergeFork(ctx, baseCtx APITestContext, baseBranch, headBranch string) fun + defer PrintCurrentTest(t)() + var pr api.PullRequest + var err error ++ ++ // Create a test pullrequest + t.Run("CreatePullRequest", func(t *testing.T) { + pr, err = doAPICreatePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, baseBranch, headBranch)(t) + assert.NoError(t, err) + }) +- t.Run("EnsureCanSeePull", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/files", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- }) ++ ++ // Ensure the PR page works ++ t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr)) ++ ++ // Then get the diff string + var diffStr string + t.Run("GetDiff", func(t *testing.T) { + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) + resp := ctx.Session.MakeRequest(t, req, http.StatusOK) + diffStr = resp.Body.String() + }) ++ ++ // Now: Merge the PR & make sure that doesn't break the PR page or change its diff + t.Run("MergePR", doAPIMergePullRequest(baseCtx, baseCtx.Username, baseCtx.Reponame, pr.Index)) +- t.Run("EnsureCanSeePull", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/files", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- }) +- t.Run("EnsureDiffNoChange", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- resp := ctx.Session.MakeRequest(t, req, http.StatusOK) +- assert.Equal(t, diffStr, resp.Body.String()) +- }) ++ t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr)) ++ t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffStr)) ++ ++ // Then: Delete the head branch & make sure that doesn't break the PR page or change its diff + t.Run("DeleteHeadBranch", doBranchDelete(baseCtx, baseCtx.Username, baseCtx.Reponame, headBranch)) +- t.Run("EnsureCanSeePull", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/files", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- }) +- t.Run("EnsureDiffNoChange", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- resp := ctx.Session.MakeRequest(t, req, http.StatusOK) +- assert.Equal(t, diffStr, resp.Body.String()) +- }) +- t.Run("DeleteRepository", doAPIDeleteRepository(ctx)) +- t.Run("EnsureCanSeePull", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/files", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- ctx.Session.MakeRequest(t, req, http.StatusOK) +- }) +- t.Run("EnsureDiffNoChange", func(t *testing.T) { +- req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) +- resp := ctx.Session.MakeRequest(t, req, http.StatusOK) +- assert.Equal(t, diffStr, resp.Body.String()) +- }) ++ t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr)) ++ t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffStr)) ++ ++ // Delete the head repository & make sure that doesn't break the PR page or change its diff ++ t.Run("DeleteHeadRepository", doAPIDeleteRepository(ctx)) ++ t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr)) ++ t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffStr)) ++ } ++} ++ ++func doEnsureCanSeePull(ctx APITestContext, pr api.PullRequest) func(t *testing.T) { ++ return func(t *testing.T) { ++ req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr.Index)) ++ ctx.Session.MakeRequest(t, req, http.StatusOK) ++ req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/files", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr.Index)) ++ ctx.Session.MakeRequest(t, req, http.StatusOK) ++ req = NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr.Index)) ++ ctx.Session.MakeRequest(t, req, http.StatusOK) ++ } ++} ++ ++func doEnsureDiffNoChange(ctx APITestContext, pr api.PullRequest, diffStr string) func(t *testing.T) { ++ return func(t *testing.T) { ++ req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr.Index)) ++ resp := ctx.Session.MakeRequest(t, req, http.StatusOK) ++ assert.Equal(t, diffStr, resp.Body.String()) + } + } + + func doPushCreate(ctx APITestContext, u *url.URL) func(t *testing.T) { + return func(t *testing.T) { + defer PrintCurrentTest(t)() ++ ++ // create a context for a currently non-existent repository + ctx.Reponame = fmt.Sprintf("repo-tmp-push-create-%s", u.Scheme) + u.Path = ctx.GitPath() + ++ // Create a temporary directory + tmpDir, err := ioutil.TempDir("", ctx.Reponame) + assert.NoError(t, err) ++ defer os.RemoveAll(tmpDir) + +- err = git.InitRepository(tmpDir, false) +- assert.NoError(t, err) ++ // Now create local repository to push as our test and set its origin ++ t.Run("InitTestRepository", doGitInitTestRepository(tmpDir)) ++ t.Run("AddRemote", doGitAddRemote(tmpDir, "origin", u)) + +- _, err = os.Create(filepath.Join(tmpDir, "test.txt")) +- assert.NoError(t, err) +- +- err = git.AddChanges(tmpDir, true) +- assert.NoError(t, err) +- +- err = git.CommitChanges(tmpDir, git.CommitChangesOptions{ +- Committer: &git.Signature{ +- Email: "user2@example.com", +- Name: "User Two", +- When: time.Now(), +- }, +- Author: &git.Signature{ +- Email: "user2@example.com", +- Name: "User Two", +- When: time.Now(), +- }, +- Message: fmt.Sprintf("Testing push create @ %v", time.Now()), +- }) +- assert.NoError(t, err) +- +- _, err = git.NewCommand("remote", "add", "origin", u.String()).RunInDir(tmpDir) +- assert.NoError(t, err) +- +- invalidCtx := ctx +- invalidCtx.Reponame = fmt.Sprintf("invalid/repo-tmp-push-create-%s", u.Scheme) +- u.Path = invalidCtx.GitPath() +- +- _, err = git.NewCommand("remote", "add", "invalid", u.String()).RunInDir(tmpDir) +- assert.NoError(t, err) +- +- // Push to create disabled ++ // Disable "Push To Create" and attempt to push + setting.Repository.EnablePushCreateUser = false +- _, err = git.NewCommand("push", "origin", "master").RunInDir(tmpDir) +- assert.Error(t, err) ++ t.Run("FailToPushAndCreateTestRepository", doGitPushTestRepositoryFail(tmpDir, "origin", "master")) + +- // Push to create enabled ++ // Enable "Push To Create" + setting.Repository.EnablePushCreateUser = true + +- // Invalid repo +- _, err = git.NewCommand("push", "invalid", "master").RunInDir(tmpDir) +- assert.Error(t, err) ++ // Assert that cloning from a non-existent repository does not create it and that it definitely wasn't create above ++ t.Run("FailToCloneFromNonExistentRepository", doGitCloneFail(u)) + +- // Valid repo +- _, err = git.NewCommand("push", "origin", "master").RunInDir(tmpDir) +- assert.NoError(t, err) ++ // Then "Push To Create"x ++ t.Run("SuccessfullyPushAndCreateTestRepository", doGitPushTestRepository(tmpDir, "origin", "master")) + +- // Fetch repo from database ++ // Finally, fetch repo from database and ensure the correct repository has been created + repo, err := models.GetRepositoryByOwnerAndName(ctx.Username, ctx.Reponame) + assert.NoError(t, err) + assert.False(t, repo.IsEmpty) + assert.True(t, repo.IsPrivate) ++ ++ // Now add a remote that is invalid to "Push To Create" ++ invalidCtx := ctx ++ invalidCtx.Reponame = fmt.Sprintf("invalid/repo-tmp-push-create-%s", u.Scheme) ++ u.Path = invalidCtx.GitPath() ++ t.Run("AddInvalidRemote", doGitAddRemote(tmpDir, "invalid", u)) ++ ++ // Fail to "Push To Create" the invalid ++ t.Run("FailToPushAndCreateInvalidTestRepository", doGitPushTestRepositoryFail(tmpDir, "invalid", "master")) + } + } + +diff --git a/integrations/ssh_key_test.go b/integrations/ssh_key_test.go +index 944d2f6be..d445c7f9e 100644 +--- a/integrations/ssh_key_test.go ++++ b/integrations/ssh_key_test.go +@@ -113,7 +113,7 @@ func testKeyOnlyOneType(t *testing.T, u *url.URL) { + + sshURL := createSSHUrl(ctx.GitPath(), u) + +- t.Run("FailToClone", doGitCloneFail(dstPath, sshURL)) ++ t.Run("FailToClone", doGitCloneFail(sshURL)) + + t.Run("CreateUserKey", doAPICreateUserKey(ctx, keyname, keyFile, func(t *testing.T, publicKey api.PublicKey) { + userKeyPublicKeyID = publicKey.ID +@@ -139,7 +139,7 @@ func testKeyOnlyOneType(t *testing.T, u *url.URL) { + + sshURL := createSSHUrl(ctx.GitPath(), u) + +- t.Run("FailToClone", doGitCloneFail(dstPath, sshURL)) ++ t.Run("FailToClone", doGitCloneFail(sshURL)) + + // Should now be able to add... + t.Run("AddReadOnlyDeployKey", doAPICreateDeployKey(ctx, keyname, keyFile, true)) +@@ -204,15 +204,11 @@ func testKeyOnlyOneType(t *testing.T, u *url.URL) { + }) + + t.Run("DeleteUserKeyShouldRemoveAbilityToClone", func(t *testing.T) { +- dstPath, err := ioutil.TempDir("", ctx.Reponame) +- assert.NoError(t, err) +- defer os.RemoveAll(dstPath) +- + sshURL := createSSHUrl(ctx.GitPath(), u) + + t.Run("DeleteUserKey", doAPIDeleteUserKey(ctx, userKeyPublicKeyID)) + +- t.Run("FailToClone", doGitCloneFail(dstPath, sshURL)) ++ t.Run("FailToClone", doGitCloneFail(sshURL)) + }) + }) + } diff --git a/community/gitea/APKBUILD b/community/gitea/APKBUILD index 022845a176..472758e444 100644 --- a/community/gitea/APKBUILD +++ b/community/gitea/APKBUILD @@ -19,6 +19,9 @@ subpackages="$pkgname-openrc" source="$pkgname-$pkgver.tar.gz::https://github.com/go-gitea/gitea/archive/v$pkgver.tar.gz $pkgname.initd $pkgname.ini + + 0001-Slight-performance-changes-to-integrations-git_test..patch + 0002-Make-the-PushCreate-test-declarative-11229.patch " builddir="$srcdir/src/code.gitea.io/$pkgname" @@ -80,4 +83,6 @@ package() { sha512sums="ba80ba77f6f761a03d062d5ceaacf0d2f9a7c5ad3c414f3d34ff31ee37ac00c4af562ecba0f14c6dca3ad2012e6cbfd8aea105dd87cfb06aedc80cf22a9ff12b gitea-1.11.5.tar.gz 2497e6f2a18e3ceb65352cd220eab2c1c0893d0e731600462a60397de2b70d7c1de7db2af2769b25fe708b0822c811bb20dc797b59b9dd93efb376bea1c35796 gitea.initd -431184faffa8996873d92d7b0d16bc4b1a0178d264cd2928d1f49b13ad3e6470d9ede7a18c12112deeeb38f0647ccc0b012e98bcbd96e7b8496a3dc18f5b1fb7 gitea.ini" +431184faffa8996873d92d7b0d16bc4b1a0178d264cd2928d1f49b13ad3e6470d9ede7a18c12112deeeb38f0647ccc0b012e98bcbd96e7b8496a3dc18f5b1fb7 gitea.ini +fef801fce26a794847fdb89dd4e9d0fe54f720b07ee378f6ee83245ca8bfd0789a2f76aa54120697c37f6452d202b5e2b113d2a2a9f775693f4d4d1fc7eaac62 0001-Slight-performance-changes-to-integrations-git_test..patch +492a215ec28207dec4b8fc3e192ac3cd9c2590f3c5d25b08ba25e334e3ad86ef47f0545f7bde7f0ae243acc215ec6be2bddc0230c8d5271dc06b0dcee1360e00 0002-Make-the-PushCreate-test-declarative-11229.patch" |