Browse Source

Do not overwrite empty DefaultBranch (#22708)

Fix #21994. 
And fix #19470.

While generating new repo from a template, it does something like
"commit to git repo, re-fetch repo model from DB, and update default
branch if it's empty".


19d5b2f922/modules/repository/generate.go (L241-L253)

Unfortunately, when load repo from DB, the default branch will be set to
`setting.Repository.DefaultBranch` if it's empty:


19d5b2f922/models/repo/repo.go (L228-L233)

I believe it's a very old temporary patch but has been kept for many
years, see:
[2d2d85bb](https://github.com/go-gitea/gitea/commit/2d2d85bb#diff-1851799b06733db4df3ec74385c1e8850ee5aedee70b8b55366910d22725eea8)

I know it's a risk to delete it, may lead to potential behavioral
changes, but we cannot keep the outdated `FIXME` forever. On the other
hand, an empty `DefaultBranch` does make sense: an empty repo doesn't
have one conceptually (actually, Gitea will still set it to
`setting.Repository.DefaultBranch` to make it safer).
tags/v1.19.0-rc0
Jason Song 1 year ago
parent
commit
82728a7cec
No account linked to committer's email address
2 changed files with 26 additions and 5 deletions
  1. 26
    0
      models/fixtures/repository.yml
  2. 0
    5
      models/repo/repo.go

+ 26
- 0
models/fixtures/repository.yml View File

owner_name: user2 owner_name: user2
lower_name: repo1 lower_name: repo1
name: repo1 name: repo1
default_branch: master
num_watches: 4 num_watches: 4
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: repo2 lower_name: repo2
name: repo2 name: repo2
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 1 num_stars: 1
num_forks: 0 num_forks: 0
owner_name: user3 owner_name: user3
lower_name: repo3 lower_name: repo3
name: repo3 name: repo3
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user5 owner_name: user5
lower_name: repo4 lower_name: repo4
name: repo4 name: repo4
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 1 num_stars: 1
num_forks: 0 num_forks: 0
owner_name: user12 owner_name: user12
lower_name: repo10 lower_name: repo10
name: repo10 name: repo10
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 1 num_forks: 1
owner_name: user13 owner_name: user13
lower_name: repo11 lower_name: repo11
name: repo11 name: repo11
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: repo15 lower_name: repo15
name: repo15 name: repo15
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: repo16 lower_name: repo16
name: repo16 name: repo16
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: repo20 lower_name: repo20
name: repo20 name: repo20
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: utf8 lower_name: utf8
name: utf8 name: utf8
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: commits_search_test lower_name: commits_search_test
name: commits_search_test name: commits_search_test
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: git_hooks_test lower_name: git_hooks_test
name: git_hooks_test name: git_hooks_test
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: limited_org owner_name: limited_org
lower_name: public_repo_on_limited_org lower_name: public_repo_on_limited_org
name: public_repo_on_limited_org name: public_repo_on_limited_org
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: limited_org owner_name: limited_org
lower_name: private_repo_on_limited_org lower_name: private_repo_on_limited_org
name: private_repo_on_limited_org name: private_repo_on_limited_org
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: privated_org owner_name: privated_org
lower_name: public_repo_on_private_org lower_name: public_repo_on_private_org
name: public_repo_on_private_org name: public_repo_on_private_org
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: privated_org owner_name: privated_org
lower_name: private_repo_on_private_org lower_name: private_repo_on_private_org
name: private_repo_on_private_org name: private_repo_on_private_org
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user2 owner_name: user2
lower_name: glob lower_name: glob
name: glob name: glob
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user27 owner_name: user27
lower_name: template1 lower_name: template1
name: template1 name: template1
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: org26 owner_name: org26
lower_name: repo_external_tracker lower_name: repo_external_tracker
name: repo_external_tracker name: repo_external_tracker
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: org26 owner_name: org26
lower_name: repo_external_tracker_numeric lower_name: repo_external_tracker_numeric
name: repo_external_tracker_numeric name: repo_external_tracker_numeric
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: org26 owner_name: org26
lower_name: repo_external_tracker_alpha lower_name: repo_external_tracker_alpha
name: repo_external_tracker_alpha name: repo_external_tracker_alpha
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user27 owner_name: user27
lower_name: repo49 lower_name: repo49
name: repo49 name: repo49
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user30 owner_name: user30
lower_name: repo50 lower_name: repo50
name: repo50 name: repo50
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user30 owner_name: user30
lower_name: repo51 lower_name: repo51
name: repo51 name: repo51
default_branch: master
num_watches: 0 num_watches: 0
num_stars: 0 num_stars: 0
num_forks: 0 num_forks: 0
owner_name: user30 owner_name: user30
lower_name: renderer lower_name: renderer
name: renderer name: renderer
default_branch: master
is_archived: false is_archived: false
is_empty: false is_empty: false
is_private: false is_private: false
owner_name: user2 owner_name: user2
lower_name: lfs lower_name: lfs
name: lfs name: lfs
default_branch: master
is_empty: false is_empty: false
is_archived: false is_archived: false
is_private: true is_private: true

+ 0
- 5
models/repo/repo.go View File



// AfterLoad is invoked from XORM after setting the values of all fields of this object. // AfterLoad is invoked from XORM after setting the values of all fields of this object.
func (repo *Repository) AfterLoad() { func (repo *Repository) AfterLoad() {
// FIXME: use models migration to solve all at once.
if len(repo.DefaultBranch) == 0 {
repo.DefaultBranch = setting.Repository.DefaultBranch
}

repo.NumOpenIssues = repo.NumIssues - repo.NumClosedIssues repo.NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
repo.NumOpenPulls = repo.NumPulls - repo.NumClosedPulls repo.NumOpenPulls = repo.NumPulls - repo.NumClosedPulls
repo.NumOpenMilestones = repo.NumMilestones - repo.NumClosedMilestones repo.NumOpenMilestones = repo.NumMilestones - repo.NumClosedMilestones

Loading…
Cancel
Save