From 6abf21b89ddd89bc838d94dff6f82313bc99c5fe Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 27 Jan 2022 09:37:48 +0800 Subject: [PATCH 1/3] Fix broken when no commits and default branch is not master --- modules/git/repo.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/git/repo.go b/modules/git/repo.go index 43f329f4487d6..02bf406a65b3b 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -77,8 +77,12 @@ func InitRepository(repoPath string, bare bool) error { func (repo *Repository) IsEmpty() (bool, error) { var errbuf strings.Builder if err := NewCommand("log", "-1").RunInDirPipeline(repo.Path, nil, &errbuf); err != nil { + defaultBranch, err := repo.GetDefaultBranch() + if err != nil { + return false, err + } if strings.Contains(errbuf.String(), "fatal: bad default revision 'HEAD'") || - strings.Contains(errbuf.String(), "fatal: your current branch 'master' does not have any commits yet") { + strings.Contains(errbuf.String(), fmt.Sprintf("fatal: your current branch '%s' does not have any commits yet", defaultBranch)) { return true, nil } return true, fmt.Errorf("check empty: %v - %s", err, errbuf.String()) From aa237b75af65687915a1816d8e26459ea5f08c5e Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 27 Jan 2022 21:02:23 +0800 Subject: [PATCH 2/3] Fix IsEmpty check --- modules/git/repo.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/modules/git/repo.go b/modules/git/repo.go index 02bf406a65b3b..4d68b84c43f2f 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -76,19 +76,12 @@ func InitRepository(repoPath string, bare bool) error { // IsEmpty Check if repository is empty. func (repo *Repository) IsEmpty() (bool, error) { var errbuf strings.Builder - if err := NewCommand("log", "-1").RunInDirPipeline(repo.Path, nil, &errbuf); err != nil { - defaultBranch, err := repo.GetDefaultBranch() - if err != nil { - return false, err - } - if strings.Contains(errbuf.String(), "fatal: bad default revision 'HEAD'") || - strings.Contains(errbuf.String(), fmt.Sprintf("fatal: your current branch '%s' does not have any commits yet", defaultBranch)) { - return true, nil - } + if err := NewCommand("rev-list", "--all", "--count", "--max-count=1").RunInDirPipeline(repo.Path, nil, &errbuf); err != nil { return true, fmt.Errorf("check empty: %v - %s", err, errbuf.String()) } - return false, nil + c, _ := strconv.Atoi(errbuf.String()) + return c == 0, nil } // CloneRepoOptions options when clone a repository From 9a0aa77cca2b7402472b5d22f2606d662b09bdfe Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Jan 2022 10:50:23 +0800 Subject: [PATCH 3/3] Improve codes --- modules/git/repo.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/git/repo.go b/modules/git/repo.go index 4d68b84c43f2f..53a8666d8b040 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -75,12 +75,15 @@ func InitRepository(repoPath string, bare bool) error { // IsEmpty Check if repository is empty. func (repo *Repository) IsEmpty() (bool, error) { - var errbuf strings.Builder - if err := NewCommand("rev-list", "--all", "--count", "--max-count=1").RunInDirPipeline(repo.Path, nil, &errbuf); err != nil { + var errbuf, output strings.Builder + if err := NewCommand("rev-list", "--all", "--count", "--max-count=1").RunInDirPipeline(repo.Path, &output, &errbuf); err != nil { return true, fmt.Errorf("check empty: %v - %s", err, errbuf.String()) } - c, _ := strconv.Atoi(errbuf.String()) + c, err := strconv.Atoi(strings.TrimSpace(output.String())) + if err != nil { + return true, fmt.Errorf("check empty: convert %s to count failed: %v", output.String(), err) + } return c == 0, nil }