Skip to content

Commit 4dbebe1

Browse files
committed
Display latest sync time for pull mirrors on the repo page
1 parent dd56933 commit 4dbebe1

File tree

10 files changed

+51
-1
lines changed

10 files changed

+51
-1
lines changed

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,8 @@ var migrations = []Migration{
552552
NewMigration("Add Index to pull_auto_merge.doer_id", v1_22.AddIndexToPullAutoMergeDoerID),
553553
// v283 -> v284
554554
NewMigration("Add combined Index to issue_user.uid and issue_id", v1_22.AddCombinedIndexToIssueUser),
555+
// v284 -> v285
556+
NewMigration("Add SyncedUnix Column", v1_22.AddSyncedUnixToRepository),
555557
}
556558

557559
// GetCurrentDBVersion returns the current db version

models/migrations/v1_22/v285.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright 2023 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_22 //nolint
5+
6+
import (
7+
"code.gitea.io/gitea/modules/timeutil"
8+
9+
"xorm.io/xorm"
10+
)
11+
12+
func AddSyncedUnixToRepository(x *xorm.Engine) error {
13+
type Repository struct {
14+
SyncedUnix timeutil.TimeStamp `xorm:"DEFAULT 0"`
15+
}
16+
17+
if err := x.Sync(new(Repository)); err != nil {
18+
return err
19+
}
20+
21+
_, err := x.Exec("UPDATE repository SET synced_unix = updated_unix WHERE is_mirror = ? AND synced_unix = 0", true)
22+
return err
23+
}

models/repo/repo.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ type Repository struct {
189189

190190
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
191191
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
192+
SyncedUnix timeutil.TimeStamp `xorm:"DEFAULT 0"`
192193
ArchivedUnix timeutil.TimeStamp `xorm:"DEFAULT 0"`
193194
}
194195

models/repo/update.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ func UpdateRepositoryUpdatedTime(ctx context.Context, repoID int64, updateTime t
4141
return err
4242
}
4343

44+
// UpdateRepositorySyncedTime updates a repository's sync time
45+
func UpdateRepositorySyncedTime(ctx context.Context, repoID int64, syncTime time.Time) error {
46+
_, err := db.GetEngine(ctx).Exec("UPDATE repository SET synced_unix = ? WHERE id = ?", syncTime.Unix(), repoID)
47+
return err
48+
}
49+
4450
// UpdateRepositoryCols updates repository's columns
4551
func UpdateRepositoryCols(ctx context.Context, repo *Repository, cols ...string) error {
4652
_, err := db.GetEngine(ctx).ID(repo.ID).Cols(cols...).Update(repo)

modules/structs/repo.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ type Repository struct {
8282
// swagger:strfmt date-time
8383
Updated time.Time `json:"updated_at"`
8484
ArchivedAt time.Time `json:"archived_at"`
85+
SyncedAt time.Time `json:"synced_at"`
8586
Permissions *Permission `json:"permissions,omitempty"`
8687
HasIssues bool `json:"has_issues"`
8788
InternalTracker *InternalTracker `json:"internal_tracker,omitempty"`

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,7 @@ migrate.cancel_migrating_title = Cancel Migration
11101110
migrate.cancel_migrating_confirm = Do you want to cancel this migration?
11111111
11121112
mirror_from = mirror of
1113+
mirror_sync = synced
11131114
forked_from = forked from
11141115
generated_from = generated from
11151116
fork_from_self = You cannot fork a repository you own.

services/convert/repository.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, permissionInR
198198
Created: repo.CreatedUnix.AsTime(),
199199
Updated: repo.UpdatedUnix.AsTime(),
200200
ArchivedAt: repo.ArchivedUnix.AsTime(),
201+
SyncedAt: repo.SyncedUnix.AsTime(),
201202
Permissions: permission,
202203
HasIssues: hasIssues,
203204
ExternalTracker: externalTracker,

services/mirror/mirror_pull.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,12 @@ func SyncPullMirror(ctx context.Context, repoID int64) bool {
548548
return false
549549
}
550550

551+
m.Repo.SyncedUnix = m.UpdatedUnix
552+
if err = repo_model.UpdateRepositorySyncedTime(ctx, m.RepoID, m.Repo.SyncedUnix.AsTime()); err != nil {
553+
log.Error("SyncMirrors [repo: %-v]: unable to update repository 'synced_unix': %v", m.Repo, err)
554+
return false
555+
}
556+
551557
log.Trace("SyncMirrors [repo: %-v]: Successfully updated", m.Repo)
552558

553559
return true

templates/repo/header.tmpl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727
</div>
2828
</div>
2929
{{if $.PullMirror}}
30-
<div class="fork-flag">{{ctx.Locale.Tr "repo.mirror_from"}} <a target="_blank" rel="noopener noreferrer" href="{{$.PullMirror.RemoteAddress}}">{{$.PullMirror.RemoteAddress}}</a></div>
30+
<div class="fork-flag">
31+
{{ctx.Locale.Tr "repo.mirror_from"}}
32+
<a target="_blank" rel="noopener noreferrer" href="{{$.PullMirror.RemoteAddress}}">{{$.PullMirror.RemoteAddress}}</a>
33+
{{ctx.Locale.Tr "repo.mirror_sync"}} {{TimeSinceUnix .SyncedUnix ctx.Locale}}
34+
</div>
3135
{{end}}
3236
{{if .IsFork}}<div class="fork-flag">{{ctx.Locale.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{.BaseRepo.FullName}}</a></div>{{end}}
3337
{{if .IsGenerated}}<div class="fork-flag">{{ctx.Locale.Tr "repo.generated_from"}} <a href="{{(.TemplateRepo ctx).Link}}">{{(.TemplateRepo ctx).FullName}}</a></div>{{end}}

templates/swagger/v1_json.tmpl

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)