Sync repo's IsEmpty status correctly (#26517) (#26560)

Backport #26517 by @wxiaoguang

Close #26509

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 7da85fa0c3)
This commit is contained in:
Giteabot 2023-08-17 13:12:14 +08:00 committed by Earl Warren
parent 44658b7d2c
commit 4ac522c8aa
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
3 changed files with 10 additions and 4 deletions

View file

@ -80,7 +80,7 @@ func InitRepository(ctx context.Context, repoPath string, bare bool) error {
// IsEmpty Check if repository is empty. // IsEmpty Check if repository is empty.
func (repo *Repository) IsEmpty() (bool, error) { func (repo *Repository) IsEmpty() (bool, error) {
var errbuf, output strings.Builder var errbuf, output strings.Builder
if err := NewCommand(repo.Ctx).AddOptionFormat("--git-dir=%s", repo.Path).AddArguments("show-ref", "--head", "^HEAD$"). if err := NewCommand(repo.Ctx).AddOptionFormat("--git-dir=%s", repo.Path).AddArguments("rev-list", "-n", "1", "--all").
Run(&RunOpts{ Run(&RunOpts{
Dir: repo.Path, Dir: repo.Path,
Stdout: &output, Stdout: &output,

View file

@ -370,8 +370,10 @@ func editFilePost(ctx *context.Context, form forms.EditRepoFileForm, isNewFile b
} }
if ctx.Repo.Repository.IsEmpty { if ctx.Repo.Repository.IsEmpty {
if isEmpty, err := ctx.Repo.GitRepo.IsEmpty(); err == nil && !isEmpty {
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty") _ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty")
} }
}
redirectForCommitChoice(ctx, form.CommitChoice, branchName, form.TreePath) redirectForCommitChoice(ctx, form.CommitChoice, branchName, form.TreePath)
} }
@ -763,8 +765,10 @@ func UploadFilePost(ctx *context.Context) {
} }
if ctx.Repo.Repository.IsEmpty { if ctx.Repo.Repository.IsEmpty {
if isEmpty, err := ctx.Repo.GitRepo.IsEmpty(); err == nil && !isEmpty {
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty") _ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: ctx.Repo.Repository.ID, IsEmpty: false}, "is_empty")
} }
}
redirectForCommitChoice(ctx, form.CommitChoice, branchName, form.TreePath) redirectForCommitChoice(ctx, form.CommitChoice, branchName, form.TreePath)
} }

View file

@ -340,8 +340,10 @@ func ChangeRepoFiles(ctx context.Context, repo *repo_model.Repository, doer *use
} }
if repo.IsEmpty { if repo.IsEmpty {
if isEmpty, err := gitRepo.IsEmpty(); err == nil && !isEmpty {
_ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: repo.ID, IsEmpty: false, DefaultBranch: opts.NewBranch}, "is_empty", "default_branch") _ = repo_model.UpdateRepositoryCols(ctx, &repo_model.Repository{ID: repo.ID, IsEmpty: false, DefaultBranch: opts.NewBranch}, "is_empty", "default_branch")
} }
}
return filesResponse, nil return filesResponse, nil
} }