diff options
Diffstat (limited to 'repository.go')
-rw-r--r-- | repository.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/repository.go b/repository.go index 76be660..35aae52 100644 --- a/repository.go +++ b/repository.go @@ -44,6 +44,10 @@ type Repository struct { // The worktree Filesystem is optional, if nil a bare repository is created. If // the given storer is not empty ErrRepositoryAlreadyExists is returned func Init(s storage.Storer, worktree billy.Filesystem) (*Repository, error) { + if err := initStorer(s); err != nil { + return nil, err + } + r := newRepository(s, worktree) _, err := r.Reference(plumbing.HEAD, false) switch err { @@ -67,6 +71,15 @@ func Init(s storage.Storer, worktree billy.Filesystem) (*Repository, error) { return r, setWorktreeAndStoragePaths(r, worktree) } +func initStorer(s storer.Storer) error { + i, ok := s.(storer.Initializer) + if !ok { + return nil + } + + return i.Init() +} + func setWorktreeAndStoragePaths(r *Repository, worktree billy.Filesystem) error { type fsBased interface { Filesystem() billy.Filesystem |