diff options
author | Santiago M. Mola <santi@mola.io> | 2017-04-28 17:50:36 +0200 |
---|---|---|
committer | Santiago M. Mola <santi@mola.io> | 2017-06-02 16:41:37 +0200 |
commit | aba32ceed59d77c84038fa421b230e1ea76a5e6b (patch) | |
tree | a11ac2285ff2bc63020c50f219d08088c4cab175 | |
parent | 756fe0c2e49d7a1d5de849026d3843b880b46a4d (diff) | |
download | go-git-aba32ceed59d77c84038fa421b230e1ea76a5e6b.tar.gz |
dotgit: support reading reference files in Windows
-rw-r--r-- | storage/filesystem/internal/dotgit/dotgit.go | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/storage/filesystem/internal/dotgit/dotgit.go b/storage/filesystem/internal/dotgit/dotgit.go index f9f4d79..7db5aa6 100644 --- a/storage/filesystem/internal/dotgit/dotgit.go +++ b/storage/filesystem/internal/dotgit/dotgit.go @@ -413,11 +413,11 @@ func (d *DotGit) processLine(line string) (*plumbing.Reference, error) { } func (d *DotGit) addRefsFromRefDir(refs *[]*plumbing.Reference) error { - return d.walkReferencesTree(refs, refsPath) + return d.walkReferencesTree(refs, []string{refsPath}) } -func (d *DotGit) walkReferencesTree(refs *[]*plumbing.Reference, relPath string) error { - files, err := d.fs.ReadDir(relPath) +func (d *DotGit) walkReferencesTree(refs *[]*plumbing.Reference, relPath []string) error { + files, err := d.fs.ReadDir(d.fs.Join(relPath...)) if err != nil { if os.IsNotExist(err) { return nil @@ -427,7 +427,7 @@ func (d *DotGit) walkReferencesTree(refs *[]*plumbing.Reference, relPath string) } for _, f := range files { - newRelPath := d.fs.Join(relPath, f.Name()) + newRelPath := append(append([]string(nil), relPath...), f.Name()) if f.IsDir() { if err = d.walkReferencesTree(refs, newRelPath); err != nil { return err @@ -436,7 +436,7 @@ func (d *DotGit) walkReferencesTree(refs *[]*plumbing.Reference, relPath string) continue } - ref, err := d.readReferenceFile(".", newRelPath) + ref, err := d.readReferenceFile(".", strings.Join(newRelPath, "/")) if err != nil { return err } @@ -463,9 +463,8 @@ func (d *DotGit) addRefFromHEAD(refs *[]*plumbing.Reference) error { return nil } -func (d *DotGit) readReferenceFile(refsPath, refFile string) (ref *plumbing.Reference, err error) { - path := d.fs.Join(refsPath, refFile) - +func (d *DotGit) readReferenceFile(path, name string) (ref *plumbing.Reference, err error) { + path = d.fs.Join(path, d.fs.Join(strings.Split(name, "/")...)) f, err := d.fs.Open(path) if err != nil { return nil, err @@ -478,7 +477,7 @@ func (d *DotGit) readReferenceFile(refsPath, refFile string) (ref *plumbing.Refe } line := strings.TrimSpace(string(b)) - return plumbing.NewReferenceFromStrings(refFile, line), nil + return plumbing.NewReferenceFromStrings(name, line), nil } // Module return a billy.Filesystem poiting to the module folder |