| @@ -662,6 +662,33 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) { | |||||
| return repo, fmt.Errorf("Clone: %v", err) | return repo, fmt.Errorf("Clone: %v", err) | ||||
| } | } | ||||
| // Check if repository is empty. | |||||
| _, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1") | |||||
| if err != nil { | |||||
| if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") { | |||||
| repo.IsBare = true | |||||
| } else { | |||||
| return repo, fmt.Errorf("check bare: %v - %s", err, stderr) | |||||
| } | |||||
| } | |||||
| if !repo.IsBare { | |||||
| // Try to get HEAD branch and set it as default branch. | |||||
| gitRepo, err := git.OpenRepository(repoPath) | |||||
| if err != nil { | |||||
| log.Error(4, "OpenRepository: %v", err) | |||||
| return repo, nil | |||||
| } | |||||
| headBranch, err := gitRepo.GetHEADBranch() | |||||
| if err != nil { | |||||
| log.Error(4, "GetHEADBranch: %v", err) | |||||
| return repo, nil | |||||
| } | |||||
| if headBranch != nil { | |||||
| repo.DefaultBranch = headBranch.Name | |||||
| } | |||||
| } | |||||
| if opts.IsMirror { | if opts.IsMirror { | ||||
| if _, err = x.InsertOne(&Mirror{ | if _, err = x.InsertOne(&Mirror{ | ||||
| RepoID: repo.ID, | RepoID: repo.ID, | ||||
| @@ -696,31 +723,6 @@ func CleanUpMigrateInfo(repo *Repository, repoPath string) (*Repository, error) | |||||
| return repo, fmt.Errorf("save config file: %v", err) | return repo, fmt.Errorf("save config file: %v", err) | ||||
| } | } | ||||
| // Check if repository is empty. | |||||
| _, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1") | |||||
| if err != nil { | |||||
| if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") { | |||||
| repo.IsBare = true | |||||
| } else { | |||||
| return repo, fmt.Errorf("check bare: %v - %s", err, stderr) | |||||
| } | |||||
| } | |||||
| // Try to get HEAD branch and set it as default branch. | |||||
| gitRepo, err := git.OpenRepository(repoPath) | |||||
| if err != nil { | |||||
| log.Error(4, "OpenRepository: %v", err) | |||||
| return repo, nil | |||||
| } | |||||
| headBranch, err := gitRepo.GetHEADBranch() | |||||
| if err != nil { | |||||
| log.Error(4, "GetHEADBranch: %v", err) | |||||
| return repo, nil | |||||
| } | |||||
| if headBranch != nil { | |||||
| repo.DefaultBranch = headBranch.Name | |||||
| } | |||||
| return repo, UpdateRepository(repo, false) | return repo, UpdateRepository(repo, false) | ||||
| } | } | ||||