You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitea/services/repository
Lunny Xiao 87db4a47c8
Also sync DB branches on push if necessary (#28361) (#28403)
Fix #28056
Backport #28361 

This PR will check whether the repo has zero branch when pushing a
branch. If that, it means this repository hasn't been synced.

The reason caused that is after user upgrade from v1.20 -> v1.21, he
just push branches without visit the repository user interface. Because
all repositories routers will check whether a branches sync is necessary
but push has not such check.

For every repository, it has two states, synced or not synced. If there
is zero branch for a repository, then it will be assumed as non-sync
state. Otherwise, it's synced state. So if we think it's synced, we just
need to update branch/insert new branch. Otherwise do a full sync. So
that, for every push, there will be almost no extra load added. It's
high performance than yours.

For the implementation, we in fact will try to update the branch first,
if updated success with affect records > 0, then all are done. Because
that means the branch has been in the database. If no record is
affected, that means the branch does not exist in database. So there are
two possibilities. One is this is a new branch, then we just need to
insert the record. Another is the branches haven't been synced, then we
need to sync all the branches into database.
1 year ago
..
archiver Next round of `db.DefaultContext` refactor (#27089) 1 year ago
files More refactoring of `db.DefaultContext` (#27083) 1 year ago
adopt.go Delete repos of org when purge delete user (#27273) (#27728) 1 year ago
adopt_test.go Use more specific test methods (#24265) 2 years ago
avatar.go Improve avatar uploading / resizing / compressing, remove Fomantic card module (#24653) 2 years ago
avatar_test.go Use context parameter in services/repository (#23186) 2 years ago
branch.go Also sync DB branches on push if necessary (#28361) (#28403) 1 year ago
cache.go Use the type RefName for all the needed places and fix pull mirror sync bugs (#24634) 2 years ago
check.go move repository deletion to service layer (#26948) 1 year ago
collaboration.go Next round of `db.DefaultContext` refactor (#27089) 1 year ago
collaboration_test.go Next round of `db.DefaultContext` refactor (#27089) 1 year ago
commit.go Show branches and tags that contain a commit (#25180) 2 years ago
create.go move repository deletion to service layer (#26948) 1 year ago
create_test.go More refactoring of `db.DefaultContext` (#27083) 1 year ago
delete.go Delete repos of org when purge delete user (#27273) (#27728) 1 year ago
delete_test.go Delete repos of org when purge delete user (#27273) (#27728) 1 year ago
fork.go Another round of `db.DefaultContext` refactor (#27103) (#27262) 1 year ago
fork_test.go Add option to prohibit fork if user reached maximum limit of repositories (#21848) 2 years ago
hooks.go Add user webhooks (#21563) 2 years ago
lfs.go Fix bugs in LFS meta garbage collection (#26122) 2 years ago
lfs_test.go Delete repos of org when purge delete user (#27273) (#27728) 1 year ago
main_test.go Implement FSFE REUSE for golang files (#21840) 2 years ago
push.go Also sync DB branches on push if necessary (#28361) (#28403) 1 year ago
repository.go Next round of `db.DefaultContext` refactor (#27089) 1 year ago
repository_test.go refactor some functions to support ctx as first parameter (#21878) 2 years ago
review.go Use context parameter in services/repository (#23186) 2 years ago
review_test.go Use context parameter in services/repository (#23186) 2 years ago
template.go Move notification interface to services layer (#26915) 1 year ago
transfer.go Next round of `db.DefaultContext` refactor (#27089) 1 year ago
transfer_test.go Replace 'userxx' with 'orgxx' in all test files when the user type is org (#27052) 1 year ago