Skip to content

Commit

Permalink
Merge pull request go-git#1170 from jakobmoellerdev/fs-load-non-bare
Browse files Browse the repository at this point in the history
plumbing: allow discovery of non bare repos in fsLoader
  • Loading branch information
pjbgf authored Aug 21, 2024
2 parents 060f00f + 36756c9 commit 5c762ae
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 9 deletions.
12 changes: 10 additions & 2 deletions plumbing/transport/server/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,16 @@ func (l *fsLoader) Load(ep *transport.Endpoint) (storer.Storer, error) {
return nil, err
}

if _, err := fs.Stat("config"); err != nil {
return nil, transport.ErrRepositoryNotFound
var bare bool
if _, err := fs.Stat("config"); err == nil {
bare = true
}

if !bare {
// do not use git.GitDirName due to import cycle
if _, err := fs.Stat(".git"); err != nil {
return nil, transport.ErrRepositoryNotFound
}
}

return filesystem.NewStorage(fs, cache.NewObjectLRUDefault()), nil
Expand Down
34 changes: 27 additions & 7 deletions plumbing/transport/server/loader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,40 @@ import (
. "gopkg.in/check.v1"
)

type loaderSuiteRepo struct {
bare bool

path string
}

type LoaderSuite struct {
RepoPath string
Repos map[string]loaderSuiteRepo
}

var _ = Suite(&LoaderSuite{})
var _ = Suite(&LoaderSuite{
Repos: map[string]loaderSuiteRepo{
"repo": {path: "repo.git"},
"bare": {path: "bare.git", bare: true},
},
})

func (s *LoaderSuite) SetUpSuite(c *C) {
if err := exec.Command("git", "--version").Run(); err != nil {
c.Skip("git command not found")
}

dir := c.MkDir()
s.RepoPath = filepath.Join(dir, "repo.git")
c.Assert(exec.Command("git", "init", "--bare", s.RepoPath).Run(), IsNil)

for key, repo := range s.Repos {
repo.path = filepath.Join(dir, repo.path)
if repo.bare {
c.Assert(exec.Command("git", "init", "--bare", repo.path).Run(), IsNil)
} else {
c.Assert(exec.Command("git", "init", repo.path).Run(), IsNil)
}
s.Repos[key] = repo
}

}

func (s *LoaderSuite) endpoint(c *C, url string) *transport.Endpoint {
Expand All @@ -45,13 +65,13 @@ func (s *LoaderSuite) TestLoadNonExistentIgnoreHost(c *C) {
}

func (s *LoaderSuite) TestLoad(c *C) {
sto, err := DefaultLoader.Load(s.endpoint(c, s.RepoPath))
sto, err := DefaultLoader.Load(s.endpoint(c, s.Repos["repo"].path))
c.Assert(err, IsNil)
c.Assert(sto, NotNil)
}

func (s *LoaderSuite) TestLoadIgnoreHost(c *C) {
sto, err := DefaultLoader.Load(s.endpoint(c, s.RepoPath))
func (s *LoaderSuite) TestLoadBare(c *C) {
sto, err := DefaultLoader.Load(s.endpoint(c, s.Repos["bare"].path))
c.Assert(err, IsNil)
c.Assert(sto, NotNil)
}
Expand Down

0 comments on commit 5c762ae

Please sign in to comment.