Skip to content

Commit 780e92e

Browse files
authored
Only git operations should update last changed of a repository (#34388)
Try to fix #32046
1 parent b07e039 commit 780e92e

File tree

19 files changed

+28
-33
lines changed

19 files changed

+28
-33
lines changed

models/actions/run.go

+1
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ func (run *ActionRun) IsSchedule() bool {
171171

172172
func updateRepoRunsNumbers(ctx context.Context, repo *repo_model.Repository) error {
173173
_, err := db.GetEngine(ctx).ID(repo.ID).
174+
NoAutoTime().
174175
SetExpr("num_action_runs",
175176
builder.Select("count(*)").From("action_run").
176177
Where(builder.Eq{"repo_id": repo.ID}),

models/repo/transfer.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func CreatePendingRepositoryTransfer(ctx context.Context, doer, newOwner *user_m
249249
}
250250

251251
repo.Status = RepositoryPendingTransfer
252-
if err := UpdateRepositoryCols(ctx, repo, "status"); err != nil {
252+
if err := UpdateRepositoryColsNoAutoTime(ctx, repo, "status"); err != nil {
253253
return err
254254
}
255255

models/repo/update.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func UpdateRepositoryOwnerNames(ctx context.Context, ownerID int64, ownerName st
2525
}
2626
defer committer.Close()
2727

28-
if _, err := db.GetEngine(ctx).Where("owner_id = ?", ownerID).Cols("owner_name").Update(&Repository{
28+
if _, err := db.GetEngine(ctx).Where("owner_id = ?", ownerID).Cols("owner_name").NoAutoTime().Update(&Repository{
2929
OwnerName: ownerName,
3030
}); err != nil {
3131
return err
@@ -40,8 +40,8 @@ func UpdateRepositoryUpdatedTime(ctx context.Context, repoID int64, updateTime t
4040
return err
4141
}
4242

43-
// UpdateRepositoryCols updates repository's columns
44-
func UpdateRepositoryCols(ctx context.Context, repo *Repository, cols ...string) error {
43+
// UpdateRepositoryColsWithAutoTime updates repository's columns
44+
func UpdateRepositoryColsWithAutoTime(ctx context.Context, repo *Repository, cols ...string) error {
4545
_, err := db.GetEngine(ctx).ID(repo.ID).Cols(cols...).Update(repo)
4646
return err
4747
}

routers/private/hook_post_receive.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
220220
}
221221

222222
if len(cols) > 0 {
223-
if err := repo_model.UpdateRepositoryCols(ctx, repo, cols...); err != nil {
223+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, cols...); err != nil {
224224
log.Error("Failed to Update: %s/%s Error: %v", ownerName, repoName, err)
225225
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
226226
Err: fmt.Sprintf("Failed to Update: %s/%s Error: %v", ownerName, repoName, err),

routers/web/repo/editor.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,6 @@ func editFilePost(ctx *context.Context, form forms.EditRepoFileForm, isNewFile b
376376
}
377377
}
378378

379-
if ctx.Repo.Repository.IsEmpty {
380-
if isEmpty, err := ctx.Repo.GitRepo.IsEmpty(); err == nil && !isEmpty {
381-
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty")
382-
}
383-
}
384-
385379
redirectForCommitChoice(ctx, form.CommitChoice, branchName, form.TreePath)
386380
}
387381

@@ -790,7 +784,7 @@ func UploadFilePost(ctx *context.Context) {
790784

791785
if ctx.Repo.Repository.IsEmpty {
792786
if isEmpty, err := ctx.Repo.GitRepo.IsEmpty(); err == nil && !isEmpty {
793-
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty")
787+
_ = repo_model.UpdateRepositoryColsWithAutoTime(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty")
794788
}
795789
}
796790

routers/web/repo/wiki.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func findWikiRepoCommit(ctx *context.Context) (*git.Repository, *git.Commit, err
109109
return wikiGitRepo, nil, errBranch
110110
}
111111
// update the default branch in the database
112-
errDb := repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, DefaultWikiBranch: gitRepoDefaultBranch}, "default_wiki_branch")
112+
errDb := repo_model.UpdateRepositoryColsNoAutoTime(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, DefaultWikiBranch: gitRepoDefaultBranch}, "default_wiki_branch")
113113
if errDb != nil {
114114
return wikiGitRepo, nil, errDb
115115
}

routers/web/repo/wiki_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ func TestDefaultWikiBranch(t *testing.T) {
245245
assert.NoError(t, wiki_service.ChangeDefaultWikiBranch(db.DefaultContext, repoWithNoWiki, "main"))
246246

247247
// repo with wiki
248-
assert.NoError(t, repo_model.UpdateRepositoryCols(db.DefaultContext, &repo_model.Repository{ID: 1, DefaultWikiBranch: "wrong-branch"}))
248+
assert.NoError(t, repo_model.UpdateRepositoryColsNoAutoTime(db.DefaultContext, &repo_model.Repository{ID: 1, DefaultWikiBranch: "wrong-branch"}))
249249

250250
ctx, _ := contexttest.MockContext(t, "user2/repo1/wiki")
251251
ctx.SetPathParam("*", "Home")

services/migrations/gitea_uploader.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func (g *GiteaLocalUploader) CreateRepo(ctx context.Context, repo *base.Reposito
148148
return err
149149
}
150150
g.repo.ObjectFormatName = objectFormat.Name()
151-
return repo_model.UpdateRepositoryCols(ctx, g.repo, "object_format_name")
151+
return repo_model.UpdateRepositoryColsNoAutoTime(ctx, g.repo, "object_format_name")
152152
}
153153

154154
// Close closes this uploader
@@ -975,7 +975,7 @@ func (g *GiteaLocalUploader) Finish(ctx context.Context) error {
975975
}
976976

977977
g.repo.Status = repo_model.RepositoryReady
978-
return repo_model.UpdateRepositoryCols(ctx, g.repo, "status")
978+
return repo_model.UpdateRepositoryColsWithAutoTime(ctx, g.repo, "status")
979979
}
980980

981981
func (g *GiteaLocalUploader) remapUser(ctx context.Context, source user_model.ExternalUserMigrated, target user_model.ExternalUserRemappable) error {

services/mirror/mirror_pull.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error
7171
// erase authentication before storing in database
7272
u.User = nil
7373
m.Repo.OriginalURL = u.String()
74-
return repo_model.UpdateRepositoryCols(ctx, m.Repo, "original_url")
74+
return repo_model.UpdateRepositoryColsNoAutoTime(ctx, m.Repo, "original_url")
7575
}
7676

7777
// mirrorSyncResult contains information of a updated reference.
@@ -653,7 +653,7 @@ func checkAndUpdateEmptyRepository(ctx context.Context, m *repo_model.Mirror, re
653653
}
654654
m.Repo.IsEmpty = false
655655
// Update the is empty and default_branch columns
656-
if err := repo_model.UpdateRepositoryCols(ctx, m.Repo, "default_branch", "is_empty"); err != nil {
656+
if err := repo_model.UpdateRepositoryColsWithAutoTime(ctx, m.Repo, "default_branch", "is_empty"); err != nil {
657657
log.Error("Failed to update default branch of repository %-v. Error: %v", m.Repo, err)
658658
desc := fmt.Sprintf("Failed to update default branch of repository '%s': %v", m.Repo.RepoPath(), err)
659659
if err = system_model.CreateRepositoryNotice(desc); err != nil {

services/repository/adopt.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func AdoptRepository(ctx context.Context, doer, owner *user_model.User, opts Cre
100100

101101
// 4 - update repository status
102102
repo.Status = repo_model.RepositoryReady
103-
if err = repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
103+
if err = repo_model.UpdateRepositoryColsWithAutoTime(ctx, repo, "status"); err != nil {
104104
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)
105105
}
106106

services/repository/avatar.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func UploadAvatar(ctx context.Context, repo *repo_model.Repository, data []byte)
4040
// Users can upload the same image to other repo - prefix it with ID
4141
// Then repo will be removed - only it avatar file will be removed
4242
repo.Avatar = newAvatar
43-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "avatar"); err != nil {
43+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "avatar"); err != nil {
4444
return fmt.Errorf("UploadAvatar: Update repository avatar: %w", err)
4545
}
4646

@@ -77,7 +77,7 @@ func DeleteAvatar(ctx context.Context, repo *repo_model.Repository) error {
7777
defer committer.Close()
7878

7979
repo.Avatar = ""
80-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "avatar"); err != nil {
80+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "avatar"); err != nil {
8181
return fmt.Errorf("DeleteAvatar: Update repository avatar: %w", err)
8282
}
8383

@@ -112,5 +112,5 @@ func generateAvatar(ctx context.Context, templateRepo, generateRepo *repo_model.
112112
return err
113113
}
114114

115-
return repo_model.UpdateRepositoryCols(ctx, generateRepo, "avatar")
115+
return repo_model.UpdateRepositoryColsNoAutoTime(ctx, generateRepo, "avatar")
116116
}

services/repository/create.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, owner *user_model.User,
321321
// 7 - update repository status to be ready
322322
if needsUpdateToReady {
323323
repo.Status = repo_model.RepositoryReady
324-
if err = repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
324+
if err = repo_model.UpdateRepositoryColsWithAutoTime(ctx, repo, "status"); err != nil {
325325
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)
326326
}
327327
}

services/repository/files/update.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func ChangeRepoFiles(ctx context.Context, repo *repo_model.Repository, doer *use
306306

307307
if repo.IsEmpty {
308308
if isEmpty, err := gitRepo.IsEmpty(); err == nil && !isEmpty {
309-
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: repo.ID, IsEmpty: false, DefaultBranch: opts.NewBranch}, "is_empty", "default_branch")
309+
_ = repo_model.UpdateRepositoryColsWithAutoTime(ctx, &repo_model.Repository{ID: repo.ID, IsEmpty: false, DefaultBranch: opts.NewBranch}, "is_empty", "default_branch")
310310
}
311311
}
312312

services/repository/fork.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
198198

199199
// 8 - update repository status to be ready
200200
repo.Status = repo_model.RepositoryReady
201-
if err = repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
201+
if err = repo_model.UpdateRepositoryColsWithAutoTime(ctx, repo, "status"); err != nil {
202202
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)
203203
}
204204

services/repository/push.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ func pushNewBranch(ctx context.Context, repo *repo_model.Repository, pusher *use
283283
}
284284
}
285285
// Update the is empty and default_branch columns
286-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "default_branch", "is_empty"); err != nil {
286+
if err := repo_model.UpdateRepositoryColsWithAutoTime(ctx, repo, "default_branch", "is_empty"); err != nil {
287287
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)
288288
}
289289
}

services/repository/repository.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ func updateRepository(ctx context.Context, repo *repo_model.Repository, visibili
205205

206206
e := db.GetEngine(ctx)
207207

208-
if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil {
208+
if _, err = e.ID(repo.ID).NoAutoTime().AllCols().Update(repo); err != nil {
209209
return fmt.Errorf("update: %w", err)
210210
}
211211

services/repository/template.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func GenerateRepository(ctx context.Context, doer, owner *user_model.User, templ
184184

185185
// 6 - update repository status to be ready
186186
generateRepo.Status = repo_model.RepositoryReady
187-
if err = repo_model.UpdateRepositoryCols(ctx, generateRepo, "status"); err != nil {
187+
if err = repo_model.UpdateRepositoryColsWithAutoTime(ctx, generateRepo, "status"); err != nil {
188188
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)
189189
}
190190

services/repository/transfer.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func transferOwnership(ctx context.Context, doer *user_model.User, newOwnerName
160160
repo.OwnerName = newOwner.Name
161161

162162
// Update repository.
163-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "owner_id", "owner_name"); err != nil {
163+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "owner_id", "owner_name"); err != nil {
164164
return fmt.Errorf("update owner: %w", err)
165165
}
166166

@@ -304,7 +304,7 @@ func transferOwnership(ctx context.Context, doer *user_model.User, newOwnerName
304304
return fmt.Errorf("deleteRepositoryTransfer: %w", err)
305305
}
306306
repo.Status = repo_model.RepositoryReady
307-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
307+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "status"); err != nil {
308308
return err
309309
}
310310

@@ -495,7 +495,7 @@ func RejectRepositoryTransfer(ctx context.Context, repo *repo_model.Repository,
495495
}
496496

497497
repo.Status = repo_model.RepositoryReady
498-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
498+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "status"); err != nil {
499499
return err
500500
}
501501

@@ -543,7 +543,7 @@ func CancelRepositoryTransfer(ctx context.Context, repoTransfer *repo_model.Repo
543543
}
544544

545545
repoTransfer.Repo.Status = repo_model.RepositoryReady
546-
if err := repo_model.UpdateRepositoryCols(ctx, repoTransfer.Repo, "status"); err != nil {
546+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repoTransfer.Repo, "status"); err != nil {
547547
return err
548548
}
549549

services/wiki/wiki.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ func ChangeDefaultWikiBranch(ctx context.Context, repo *repo_model.Repository, n
365365
}
366366
return db.WithTx(ctx, func(ctx context.Context) error {
367367
repo.DefaultWikiBranch = newBranch
368-
if err := repo_model.UpdateRepositoryCols(ctx, repo, "default_wiki_branch"); err != nil {
368+
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "default_wiki_branch"); err != nil {
369369
return fmt.Errorf("unable to update database: %w", err)
370370
}
371371

0 commit comments

Comments
 (0)