diff options
Diffstat (limited to 'modules/git/repo.go')
-rw-r--r-- | modules/git/repo.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/modules/git/repo.go b/modules/git/repo.go index f5d7ee63bb..8a40fb1b91 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -107,6 +107,20 @@ func OpenRepository(repoPath string) (*Repository, error) { }, nil } +// 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 { + 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") { + return true, nil + } + return true, fmt.Errorf("check empty: %v - %s", err, errbuf.String()) + } + + return false, nil +} + // CloneRepoOptions options when clone a repository type CloneRepoOptions struct { Timeout time.Duration |