From 760749b6b75f4d612410d72280a9ddad36379e2a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 16 Mar 2025 11:43:34 -0700 Subject: [PATCH 1/3] Move SetDefaultBranch to gitrepo --- models/repo/repo.go | 8 ++++++++ modules/gitrepo/branch.go | 13 ++++++++++--- modules/gitrepo/gitrepo.go | 2 ++ routers/api/v1/repo/repo.go | 4 ++-- routers/private/default_branch.go | 2 +- services/mirror/mirror_pull.go | 2 +- services/repository/adopt.go | 6 +++--- services/repository/branch.go | 5 +++-- services/repository/create.go | 2 +- services/repository/generate.go | 2 +- services/repository/push.go | 2 +- services/wiki/wiki.go | 2 +- 12 files changed, 34 insertions(+), 16 deletions(-) diff --git a/models/repo/repo.go b/models/repo/repo.go index 13473699f38d4..3bee5a751faea 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -223,6 +223,14 @@ func (repo *Repository) GetOwnerName() string { return repo.OwnerName } +func (repo *Repository) GetDefaultBranch() string { + return repo.DefaultBranch +} + +func (repo *Repository) GetDefaultWikiBranch() string { + return repo.DefaultWikiBranch +} + // SanitizedOriginalURL returns a sanitized OriginalURL func (repo *Repository) SanitizedOriginalURL() string { if repo.OriginalURL == "" { diff --git a/modules/gitrepo/branch.go b/modules/gitrepo/branch.go index 9c4bdc5bdffa9..9b77fa708954a 100644 --- a/modules/gitrepo/branch.go +++ b/modules/gitrepo/branch.go @@ -31,14 +31,21 @@ func GetBranchCommitID(ctx context.Context, repo Repository, branch string) (str return gitRepo.GetBranchCommitID(branch) } -// SetDefaultBranch sets default branch of repository. -func SetDefaultBranch(ctx context.Context, repo Repository, name string) error { +// SetDefaultBranchForRepo sets default branch of repository. +func SetDefaultBranchForRepo(ctx context.Context, repo Repository) error { _, _, err := git.NewCommand("symbolic-ref", "HEAD"). - AddDynamicArguments(git.BranchPrefix+name). + AddDynamicArguments(git.BranchPrefix+repo.GetDefaultBranch()). RunStdString(ctx, &git.RunOpts{Dir: repoPath(repo)}) return err } +func SetDefaultBranchForWiki(ctx context.Context, repo Repository) error { + _, _, err := git.NewCommand("symbolic-ref", "HEAD"). + AddDynamicArguments(git.BranchPrefix+repo.GetDefaultWikiBranch()). + RunStdString(ctx, &git.RunOpts{Dir: wikiPath(repo)}) + return err +} + // GetDefaultBranch gets default branch of repository. func GetDefaultBranch(ctx context.Context, repo Repository) (string, error) { return git.GetDefaultBranch(ctx, repoPath(repo)) diff --git a/modules/gitrepo/gitrepo.go b/modules/gitrepo/gitrepo.go index 5e2ec9ed1edf6..179cfd49c0f9c 100644 --- a/modules/gitrepo/gitrepo.go +++ b/modules/gitrepo/gitrepo.go @@ -19,6 +19,8 @@ import ( type Repository interface { GetName() string GetOwnerName() string + GetDefaultBranch() string + GetDefaultWikiBranch() string } func absPath(owner, name string) string { diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 3d638cb05e029..8f7616182d18c 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -735,14 +735,14 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err // Default branch only updated if changed and exist or the repository is empty updateRepoLicense := false if opts.DefaultBranch != nil && repo.DefaultBranch != *opts.DefaultBranch && (repo.IsEmpty || gitrepo.IsBranchExist(ctx, ctx.Repo.Repository, *opts.DefaultBranch)) { + repo.DefaultBranch = *opts.DefaultBranch if !repo.IsEmpty { - if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, *opts.DefaultBranch); err != nil { + if err := gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { ctx.APIErrorInternal(err) return err } updateRepoLicense = true } - repo.DefaultBranch = *opts.DefaultBranch } if err := repo_service.UpdateRepository(ctx, repo, visibilityChanged); err != nil { diff --git a/routers/private/default_branch.go b/routers/private/default_branch.go index c375d70dc6f2b..4ba002d014547 100644 --- a/routers/private/default_branch.go +++ b/routers/private/default_branch.go @@ -21,7 +21,7 @@ func SetDefaultBranch(ctx *gitea_context.PrivateContext) { branch := ctx.PathParam("branch") ctx.Repo.Repository.DefaultBranch = branch - if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, ctx.Repo.Repository.DefaultBranch); err != nil { + if err := gitrepo.SetDefaultBranchForRepo(ctx, ctx.Repo.Repository); err != nil { ctx.JSON(http.StatusInternalServerError, private.Response{ Err: fmt.Sprintf("Unable to set default branch on repository: %s/%s Error: %v", ownerName, repoName, err), }) diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go index 658747e7c83f1..53f50003cdaab 100644 --- a/services/mirror/mirror_pull.go +++ b/services/mirror/mirror_pull.go @@ -629,7 +629,7 @@ func checkAndUpdateEmptyRepository(ctx context.Context, m *repo_model.Mirror, re m.Repo.DefaultBranch = firstName } // Update the git repository default branch - if err := gitrepo.SetDefaultBranch(ctx, m.Repo, m.Repo.DefaultBranch); err != nil { + if err := gitrepo.SetDefaultBranchForRepo(ctx, m.Repo); err != nil { log.Error("Failed to update default branch of underlying git repository %-v. Error: %v", m.Repo, err) return false } diff --git a/services/repository/adopt.go b/services/repository/adopt.go index ea4f9a1920234..75e4a30adefa7 100644 --- a/services/repository/adopt.go +++ b/services/repository/adopt.go @@ -124,14 +124,14 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr if len(defaultBranch) > 0 { repo.DefaultBranch = defaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err = gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } else { repo.DefaultBranch, err = gitrepo.GetDefaultBranch(ctx, repo) if err != nil { repo.DefaultBranch = setting.Repository.DefaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err = gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } @@ -188,7 +188,7 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr repo.DefaultBranch = setting.Repository.DefaultBranch } - if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err = gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } diff --git a/services/repository/branch.go b/services/repository/branch.go index 8804778bd5ebb..fa0574119031c 100644 --- a/services/repository/branch.go +++ b/services/repository/branch.go @@ -463,7 +463,8 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, doer *user_m log.Error("CancelPreviousJobs: %v", err) } - err2 = gitrepo.SetDefaultBranch(ctx, repo, to) + // repo's default branch has been updated in git_model.RenameBranch + err2 = gitrepo.SetDefaultBranchForRepo(ctx, repo) if err2 != nil { return err2 } @@ -650,7 +651,7 @@ func SetRepoDefaultBranch(ctx context.Context, repo *repo_model.Repository, newB log.Error("CancelPreviousJobs: %v", err) } - return gitrepo.SetDefaultBranch(ctx, repo, newBranchName) + return gitrepo.SetDefaultBranchForRepo(ctx, repo) }); err != nil { return err } diff --git a/services/repository/create.go b/services/repository/create.go index 1a6a68b35aec5..3af9efe1e40ee 100644 --- a/services/repository/create.go +++ b/services/repository/create.go @@ -181,7 +181,7 @@ func initRepository(ctx context.Context, u *user_model.User, repo *repo_model.Re if len(opts.DefaultBranch) > 0 { repo.DefaultBranch = opts.DefaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err = gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } diff --git a/services/repository/generate.go b/services/repository/generate.go index 9d2bbb1f7fbea..b61139ea00479 100644 --- a/services/repository/generate.go +++ b/services/repository/generate.go @@ -281,7 +281,7 @@ func generateGitContent(ctx context.Context, repo, templateRepo, generateRepo *r repo.DefaultBranch = templateRepo.DefaultBranch } - if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err = gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } if err = UpdateRepository(ctx, repo, false); err != nil { diff --git a/services/repository/push.go b/services/repository/push.go index c40333f0a8b76..b3ccb6cf542a3 100644 --- a/services/repository/push.go +++ b/services/repository/push.go @@ -185,7 +185,7 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error { repo.DefaultBranch = refName repo.IsEmpty = false if repo.DefaultBranch != setting.Repository.DefaultBranch { - if err := gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { + if err := gitrepo.SetDefaultBranchForRepo(ctx, repo); err != nil { return err } } diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go index a3fe07927d9cd..eb4a5acae708f 100644 --- a/services/wiki/wiki.go +++ b/services/wiki/wiki.go @@ -43,7 +43,7 @@ func InitWiki(ctx context.Context, repo *repo_model.Repository) error { return fmt.Errorf("InitRepository: %w", err) } else if err = gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) - } else if _, _, err = git.NewCommand("symbolic-ref", "HEAD").AddDynamicArguments(git.BranchPrefix+repo.DefaultWikiBranch).RunStdString(ctx, &git.RunOpts{Dir: repo.WikiPath()}); err != nil { + } else if err = gitrepo.SetDefaultBranchForWiki(ctx, repo); err != nil { return fmt.Errorf("unable to set default wiki branch to %q: %w", repo.DefaultWikiBranch, err) } return nil From eda63517dd5c65d8941cfa20bf0bdf31900c88e2 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2025 19:07:37 -0700 Subject: [PATCH 2/3] Revert interface change --- models/repo/repo.go | 24 +++++------------------- modules/gitrepo/branch.go | 4 ++-- modules/gitrepo/gitrepo.go | 5 ++--- routers/api/v1/repo/repo.go | 2 +- routers/private/default_branch.go | 2 +- services/mirror/mirror_pull.go | 2 +- services/repository/adopt.go | 6 +++--- services/repository/branch.go | 4 ++-- services/repository/create.go | 2 +- services/repository/generate.go | 2 +- services/repository/push.go | 2 +- services/repository/transfer.go | 6 ++---- services/wiki/wiki.go | 2 +- 13 files changed, 23 insertions(+), 40 deletions(-) diff --git a/models/repo/repo.go b/models/repo/repo.go index d0dc37572fa07..a8732f60bfff8 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -220,33 +220,19 @@ func RelativePath(ownerName, repoName string) string { } // RelativePath should be an unix style path like username/reponame.git -func (repo *Repository) GetRelativePath() string { +func (repo *Repository) RelativePath() string { return RelativePath(repo.OwnerName, repo.Name) } -func (repo *Repository) GetDefaultBranch() string { - return repo.DefaultBranch -} - -type StorageRepo struct { - RelativePath string - DefaultBranch string -} +type StorageRepo string // RelativePath should be an unix style path like username/reponame.git -func (sr StorageRepo) GetRelativePath() string { - return sr.RelativePath -} - -func (sr StorageRepo) GetDefaultBranch() string { - return sr.DefaultBranch +func (sr StorageRepo) RelativePath() string { + return string(sr) } func (repo *Repository) WikiStorageRepo() StorageRepo { - return StorageRepo{ - RelativePath: strings.ToLower(repo.OwnerName) + "/" + strings.ToLower(repo.Name) + ".wiki.git", - DefaultBranch: repo.DefaultWikiBranch, - } + return StorageRepo(strings.ToLower(repo.OwnerName) + "/" + strings.ToLower(repo.Name) + ".wiki.git") } // SanitizedOriginalURL returns a sanitized OriginalURL diff --git a/modules/gitrepo/branch.go b/modules/gitrepo/branch.go index c7550cc0cd3fd..7643787b9186e 100644 --- a/modules/gitrepo/branch.go +++ b/modules/gitrepo/branch.go @@ -32,9 +32,9 @@ func GetBranchCommitID(ctx context.Context, repo Repository, branch string) (str } // SetDefaultBranch sets default branch of repository. -func SetDefaultBranch(ctx context.Context, repo Repository) error { +func SetDefaultBranch(ctx context.Context, repo Repository, defaultBranch string) error { _, _, err := git.NewCommand("symbolic-ref", "HEAD"). - AddDynamicArguments(git.BranchPrefix+repo.GetDefaultBranch()). + AddDynamicArguments(git.BranchPrefix+defaultBranch). RunStdString(ctx, &git.RunOpts{Dir: repoPath(repo)}) return err } diff --git a/modules/gitrepo/gitrepo.go b/modules/gitrepo/gitrepo.go index c0363a88e972e..5da65e2452704 100644 --- a/modules/gitrepo/gitrepo.go +++ b/modules/gitrepo/gitrepo.go @@ -17,14 +17,13 @@ import ( // Repository represents a git repository which stored in a disk type Repository interface { - GetRelativePath() string // We don't assume how the directory structure of the repository is, so we only need the relative path - GetDefaultBranch() string + RelativePath() string // We don't assume how the directory structure of the repository is, so we only need the relative path } // RelativePath should be an unix style path like username/reponame.git // This method should change it according to the current OS. func repoPath(repo Repository) string { - return filepath.Join(setting.RepoRootPath, filepath.FromSlash(repo.GetRelativePath())) + return filepath.Join(setting.RepoRootPath, filepath.FromSlash(repo.RelativePath())) } // OpenRepository opens the repository at the given relative path with the provided context. diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 037215364c8b2..787ca2672dbe6 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -737,7 +737,7 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err if opts.DefaultBranch != nil && repo.DefaultBranch != *opts.DefaultBranch && (repo.IsEmpty || gitrepo.IsBranchExist(ctx, ctx.Repo.Repository, *opts.DefaultBranch)) { repo.DefaultBranch = *opts.DefaultBranch if !repo.IsEmpty { - if err := gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err := gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { ctx.APIErrorInternal(err) return err } diff --git a/routers/private/default_branch.go b/routers/private/default_branch.go index 2066fb267dae2..27311c900f761 100644 --- a/routers/private/default_branch.go +++ b/routers/private/default_branch.go @@ -21,7 +21,7 @@ func SetDefaultBranch(ctx *gitea_context.PrivateContext) { branch := ctx.PathParam("branch") ctx.Repo.Repository.DefaultBranch = branch - if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository); err != nil { + if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, branch); err != nil { ctx.JSON(http.StatusInternalServerError, private.Response{ Err: fmt.Sprintf("Unable to set default branch on repository: %s/%s Error: %v", ownerName, repoName, err), }) diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go index cc2d0a8a11ead..fa5b9934ec90f 100644 --- a/services/mirror/mirror_pull.go +++ b/services/mirror/mirror_pull.go @@ -647,7 +647,7 @@ func checkAndUpdateEmptyRepository(ctx context.Context, m *repo_model.Mirror, re m.Repo.DefaultBranch = firstName } // Update the git repository default branch - if err := gitrepo.SetDefaultBranch(ctx, m.Repo); err != nil { + if err := gitrepo.SetDefaultBranch(ctx, m.Repo, m.Repo.DefaultBranch); err != nil { log.Error("Failed to update default branch of underlying git repository %-v. Error: %v", m.Repo, err) return false } diff --git a/services/repository/adopt.go b/services/repository/adopt.go index b8a719dc261bd..b7321156d9da8 100644 --- a/services/repository/adopt.go +++ b/services/repository/adopt.go @@ -124,14 +124,14 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr if len(defaultBranch) > 0 { repo.DefaultBranch = defaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } else { repo.DefaultBranch, err = gitrepo.GetDefaultBranch(ctx, repo) if err != nil { repo.DefaultBranch = setting.Repository.DefaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } @@ -188,7 +188,7 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr repo.DefaultBranch = setting.Repository.DefaultBranch } - if err = gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } } diff --git a/services/repository/branch.go b/services/repository/branch.go index b870bbd54bbf0..8b9f4dc290d0e 100644 --- a/services/repository/branch.go +++ b/services/repository/branch.go @@ -464,7 +464,7 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, doer *user_m } // repo's default branch has been updated in git_model.RenameBranch - err2 = gitrepo.SetDefaultBranch(ctx, repo) + err2 = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch) if err2 != nil { return err2 } @@ -651,7 +651,7 @@ func SetRepoDefaultBranch(ctx context.Context, repo *repo_model.Repository, newB log.Error("CancelPreviousJobs: %v", err) } - return gitrepo.SetDefaultBranch(ctx, repo) + return gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch) }); err != nil { return err } diff --git a/services/repository/create.go b/services/repository/create.go index 1b8e199569672..1a6a68b35aec5 100644 --- a/services/repository/create.go +++ b/services/repository/create.go @@ -181,7 +181,7 @@ func initRepository(ctx context.Context, u *user_model.User, repo *repo_model.Re if len(opts.DefaultBranch) > 0 { repo.DefaultBranch = opts.DefaultBranch - if err = gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } diff --git a/services/repository/generate.go b/services/repository/generate.go index 1263621e400f7..9d2bbb1f7fbea 100644 --- a/services/repository/generate.go +++ b/services/repository/generate.go @@ -281,7 +281,7 @@ func generateGitContent(ctx context.Context, repo, templateRepo, generateRepo *r repo.DefaultBranch = templateRepo.DefaultBranch } - if err = gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return fmt.Errorf("setDefaultBranch: %w", err) } if err = UpdateRepository(ctx, repo, false); err != nil { diff --git a/services/repository/push.go b/services/repository/push.go index e6cf0e0b1ae5d..6d3b9dd252abc 100644 --- a/services/repository/push.go +++ b/services/repository/push.go @@ -278,7 +278,7 @@ func pushNewBranch(ctx context.Context, repo *repo_model.Repository, pusher *use repo.DefaultBranch = opts.RefName() repo.IsEmpty = false if repo.DefaultBranch != setting.Repository.DefaultBranch { - if err := gitrepo.SetDefaultBranch(ctx, repo); err != nil { + if err := gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil { return nil, err } } diff --git a/services/repository/transfer.go b/services/repository/transfer.go index 6ce8c51f393da..b63dd97a9b61d 100644 --- a/services/repository/transfer.go +++ b/services/repository/transfer.go @@ -337,10 +337,8 @@ func changeRepositoryName(ctx context.Context, repo *repo_model.Repository, newR } if err = gitrepo.RenameRepository(ctx, repo, - repo_model.StorageRepo{ - RelativePath: repo_model.RelativePath(repo.OwnerName, newRepoName), - DefaultBranch: repo.DefaultBranch, - }); err != nil { + repo_model.StorageRepo(repo_model.RelativePath(repo.OwnerName, newRepoName)), + ); err != nil { return fmt.Errorf("rename repository directory: %w", err) } diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go index a6cebb3fdbf16..4cc372c70db6b 100644 --- a/services/wiki/wiki.go +++ b/services/wiki/wiki.go @@ -43,7 +43,7 @@ func InitWiki(ctx context.Context, repo *repo_model.Repository) error { return fmt.Errorf("InitRepository: %w", err) } else if err = gitrepo.CreateDelegateHooks(ctx, repo.WikiStorageRepo()); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) - } else if err = gitrepo.SetDefaultBranch(ctx, repo.WikiStorageRepo()); err != nil { + } else if err = gitrepo.SetDefaultBranch(ctx, repo.WikiStorageRepo(), repo.DefaultWikiBranch); err != nil { return fmt.Errorf("unable to set default wiki branch to %q: %w", repo.DefaultWikiBranch, err) } return nil From 00a9044f41be6c7f555446c953d79ea2e435f30c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2025 19:13:07 -0700 Subject: [PATCH 3/3] Revert unnecessary changes --- modules/gitrepo/branch.go | 4 ++-- routers/private/default_branch.go | 2 +- services/repository/branch.go | 5 ++--- services/repository/transfer.go | 3 +-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/modules/gitrepo/branch.go b/modules/gitrepo/branch.go index 7643787b9186e..25ea5abfca1bd 100644 --- a/modules/gitrepo/branch.go +++ b/modules/gitrepo/branch.go @@ -32,9 +32,9 @@ func GetBranchCommitID(ctx context.Context, repo Repository, branch string) (str } // SetDefaultBranch sets default branch of repository. -func SetDefaultBranch(ctx context.Context, repo Repository, defaultBranch string) error { +func SetDefaultBranch(ctx context.Context, repo Repository, name string) error { _, _, err := git.NewCommand("symbolic-ref", "HEAD"). - AddDynamicArguments(git.BranchPrefix+defaultBranch). + AddDynamicArguments(git.BranchPrefix+name). RunStdString(ctx, &git.RunOpts{Dir: repoPath(repo)}) return err } diff --git a/routers/private/default_branch.go b/routers/private/default_branch.go index 27311c900f761..c375d70dc6f2b 100644 --- a/routers/private/default_branch.go +++ b/routers/private/default_branch.go @@ -21,7 +21,7 @@ func SetDefaultBranch(ctx *gitea_context.PrivateContext) { branch := ctx.PathParam("branch") ctx.Repo.Repository.DefaultBranch = branch - if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, branch); err != nil { + if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, ctx.Repo.Repository.DefaultBranch); err != nil { ctx.JSON(http.StatusInternalServerError, private.Response{ Err: fmt.Sprintf("Unable to set default branch on repository: %s/%s Error: %v", ownerName, repoName, err), }) diff --git a/services/repository/branch.go b/services/repository/branch.go index 8b9f4dc290d0e..8804778bd5ebb 100644 --- a/services/repository/branch.go +++ b/services/repository/branch.go @@ -463,8 +463,7 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, doer *user_m log.Error("CancelPreviousJobs: %v", err) } - // repo's default branch has been updated in git_model.RenameBranch - err2 = gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch) + err2 = gitrepo.SetDefaultBranch(ctx, repo, to) if err2 != nil { return err2 } @@ -651,7 +650,7 @@ func SetRepoDefaultBranch(ctx context.Context, repo *repo_model.Repository, newB log.Error("CancelPreviousJobs: %v", err) } - return gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch) + return gitrepo.SetDefaultBranch(ctx, repo, newBranchName) }); err != nil { return err } diff --git a/services/repository/transfer.go b/services/repository/transfer.go index b63dd97a9b61d..a589bc469d87f 100644 --- a/services/repository/transfer.go +++ b/services/repository/transfer.go @@ -337,8 +337,7 @@ func changeRepositoryName(ctx context.Context, repo *repo_model.Repository, newR } if err = gitrepo.RenameRepository(ctx, repo, - repo_model.StorageRepo(repo_model.RelativePath(repo.OwnerName, newRepoName)), - ); err != nil { + repo_model.StorageRepo(repo_model.RelativePath(repo.OwnerName, newRepoName))); err != nil { return fmt.Errorf("rename repository directory: %w", err) }