Fix push time bug (#36693)
When display or search branch's pushed time, we should use `updated_unix` rather than `commit_time`. Fix #36633 --------- Signed-off-by: silverwind <me@silverwind.io> Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
@@ -450,7 +450,7 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, from, to str
|
|||||||
type FindRecentlyPushedNewBranchesOptions struct {
|
type FindRecentlyPushedNewBranchesOptions struct {
|
||||||
Repo *repo_model.Repository
|
Repo *repo_model.Repository
|
||||||
BaseRepo *repo_model.Repository
|
BaseRepo *repo_model.Repository
|
||||||
CommitAfterUnix int64
|
PushedAfterUnix int64
|
||||||
MaxCount int
|
MaxCount int
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,11 +460,11 @@ type RecentlyPushedNewBranch struct {
|
|||||||
BranchDisplayName string
|
BranchDisplayName string
|
||||||
BranchLink string
|
BranchLink string
|
||||||
BranchCompareURL string
|
BranchCompareURL string
|
||||||
CommitTime timeutil.TimeStamp
|
PushedTime timeutil.TimeStamp
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindRecentlyPushedNewBranches return at most 2 new branches pushed by the user in 2 hours which has no opened PRs created
|
// FindRecentlyPushedNewBranches return at most 2 new branches pushed by the user in 2 hours which has no opened PRs created
|
||||||
// if opts.CommitAfterUnix is 0, we will find the branches that were committed to in the last 2 hours
|
// if opts.PushedAfterUnix is 0, we will find the branches that were pushed in the last 2 hours
|
||||||
// if opts.ListOptions is not set, we will only display top 2 latest branches.
|
// if opts.ListOptions is not set, we will only display top 2 latest branches.
|
||||||
// Protected branches will be skipped since they are unlikely to be used to create new PRs.
|
// Protected branches will be skipped since they are unlikely to be used to create new PRs.
|
||||||
func FindRecentlyPushedNewBranches(ctx context.Context, doer *user_model.User, opts FindRecentlyPushedNewBranchesOptions) ([]*RecentlyPushedNewBranch, error) {
|
func FindRecentlyPushedNewBranches(ctx context.Context, doer *user_model.User, opts FindRecentlyPushedNewBranchesOptions) ([]*RecentlyPushedNewBranch, error) {
|
||||||
@@ -492,8 +492,8 @@ func FindRecentlyPushedNewBranches(ctx context.Context, doer *user_model.User, o
|
|||||||
}
|
}
|
||||||
repoIDs := builder.Select("id").From("repository").Where(repoCond)
|
repoIDs := builder.Select("id").From("repository").Where(repoCond)
|
||||||
|
|
||||||
if opts.CommitAfterUnix == 0 {
|
if opts.PushedAfterUnix == 0 {
|
||||||
opts.CommitAfterUnix = time.Now().Add(-time.Hour * 2).Unix()
|
opts.PushedAfterUnix = time.Now().Add(-time.Hour * 2).Unix()
|
||||||
}
|
}
|
||||||
|
|
||||||
var ignoredCommitIDs []string
|
var ignoredCommitIDs []string
|
||||||
@@ -522,7 +522,7 @@ func FindRecentlyPushedNewBranches(ctx context.Context, doer *user_model.User, o
|
|||||||
"pusher_id": doer.ID,
|
"pusher_id": doer.ID,
|
||||||
"is_deleted": false,
|
"is_deleted": false,
|
||||||
},
|
},
|
||||||
builder.Gte{"commit_time": opts.CommitAfterUnix},
|
builder.Gte{"updated_unix": opts.PushedAfterUnix},
|
||||||
builder.In("repo_id", repoIDs),
|
builder.In("repo_id", repoIDs),
|
||||||
// newly created branch have no changes, so skip them
|
// newly created branch have no changes, so skip them
|
||||||
builder.NotIn("commit_id", ignoredCommitIDs),
|
builder.NotIn("commit_id", ignoredCommitIDs),
|
||||||
@@ -573,7 +573,7 @@ func FindRecentlyPushedNewBranches(ctx context.Context, doer *user_model.User, o
|
|||||||
BranchName: branch.Name,
|
BranchName: branch.Name,
|
||||||
BranchLink: fmt.Sprintf("%s/src/branch/%s", branch.Repo.Link(), util.PathEscapeSegments(branch.Name)),
|
BranchLink: fmt.Sprintf("%s/src/branch/%s", branch.Repo.Link(), util.PathEscapeSegments(branch.Name)),
|
||||||
BranchCompareURL: branch.Repo.ComposeBranchCompareURL(opts.BaseRepo, baseTargetBranchName, branch.Name),
|
BranchCompareURL: branch.Repo.ComposeBranchCompareURL(opts.BaseRepo, baseTargetBranchName, branch.Name),
|
||||||
CommitTime: branch.CommitTime,
|
PushedTime: branch.UpdatedUnix,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if len(newBranches) == opts.MaxCount {
|
if len(newBranches) == opts.MaxCount {
|
||||||
|
|||||||
@@ -6,14 +6,17 @@ package git_test
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
git_model "code.gitea.io/gitea/models/git"
|
git_model "code.gitea.io/gitea/models/git"
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
"code.gitea.io/gitea/modules/optional"
|
"code.gitea.io/gitea/modules/optional"
|
||||||
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
@@ -63,6 +66,36 @@ func TestGetDeletedBranch(t *testing.T) {
|
|||||||
assert.NotNil(t, getDeletedBranch(t, firstBranch))
|
assert.NotNil(t, getDeletedBranch(t, firstBranch))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFindRecentlyPushedNewBranchesUsesPushTime(t *testing.T) {
|
||||||
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 10})
|
||||||
|
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 12})
|
||||||
|
branch := unittest.AssertExistsAndLoadBean(t, &git_model.Branch{RepoID: repo.ID, Name: "outdated-new-branch"})
|
||||||
|
|
||||||
|
commitUnix := time.Now().Add(-3 * time.Hour).Unix()
|
||||||
|
pushUnix := time.Now().Add(-30 * time.Minute).Unix()
|
||||||
|
_, err := db.GetEngine(t.Context()).Exec(
|
||||||
|
"UPDATE branch SET commit_time = ?, updated_unix = ? WHERE id = ?",
|
||||||
|
commitUnix,
|
||||||
|
pushUnix,
|
||||||
|
branch.ID,
|
||||||
|
)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
branches, err := git_model.FindRecentlyPushedNewBranches(t.Context(), doer, git_model.FindRecentlyPushedNewBranchesOptions{
|
||||||
|
Repo: repo,
|
||||||
|
BaseRepo: repo,
|
||||||
|
PushedAfterUnix: time.Now().Add(-time.Hour).Unix(),
|
||||||
|
MaxCount: 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
if assert.Len(t, branches, 1) {
|
||||||
|
assert.Equal(t, branch.Name, branches[0].BranchName)
|
||||||
|
assert.Equal(t, timeutil.TimeStamp(pushUnix), branches[0].PushedTime)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestDeletedBranchLoadUser(t *testing.T) {
|
func TestDeletedBranchLoadUser(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{{range $recentBranch := $data.RecentlyPushedNewBranches}}
|
{{range $recentBranch := $data.RecentlyPushedNewBranches}}
|
||||||
<div class="ui positive message flex-text-block">
|
<div class="ui positive message flex-text-block">
|
||||||
<div class="tw-flex-1">
|
<div class="tw-flex-1">
|
||||||
{{$timeSince := DateUtils.TimeSince $recentBranch.CommitTime}}
|
{{$timeSince := DateUtils.TimeSince $recentBranch.PushedTime}}
|
||||||
{{$branchLink := HTMLFormat `<a href="%s">%s</a>` $recentBranch.BranchLink .BranchDisplayName}}
|
{{$branchLink := HTMLFormat `<a href="%s">%s</a>` $recentBranch.BranchLink .BranchDisplayName}}
|
||||||
{{ctx.Locale.Tr "repo.pulls.recently_pushed_new_branches" $branchLink $timeSince}}
|
{{ctx.Locale.Tr "repo.pulls.recently_pushed_new_branches" $branchLink $timeSince}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user