diff options
author | Santiago M. Mola <santi@mola.io> | 2016-11-03 17:10:43 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-11-03 17:10:43 +0100 |
commit | 3f7fbc6c49e50eb22e3de8a5143817fa7c0c54dd (patch) | |
tree | 0bf81a6dd858278000d1d7f7afc578d993fba791 /storage/filesystem/reference.go | |
parent | 94f5e9c949963893d1c3d3e987a591ee15265327 (diff) | |
download | go-git-3f7fbc6c49e50eb22e3de8a5143817fa7c0c54dd.tar.gz |
storage/filesystem: implement missing functionality. (#110)
* storage/filesystem: added ObjectStorage Set.
* storage/filesystem: now passes all tests, except those specific to transactions.
* formats/config: Encoder now encodes subsections with no options.
* formats/config: add HasSubsection on Section.
* dotgit: add Ref method to get specific reference.
Diffstat (limited to 'storage/filesystem/reference.go')
-rw-r--r-- | storage/filesystem/reference.go | 40 |
1 files changed, 4 insertions, 36 deletions
diff --git a/storage/filesystem/reference.go b/storage/filesystem/reference.go index ae78efb..b2aa6d9 100644 --- a/storage/filesystem/reference.go +++ b/storage/filesystem/reference.go @@ -6,8 +6,7 @@ import ( ) type ReferenceStorage struct { - dir *dotgit.DotGit - refs map[core.ReferenceName]*core.Reference + dir *dotgit.DotGit } func (r *ReferenceStorage) Set(ref *core.Reference) error { @@ -15,45 +14,14 @@ func (r *ReferenceStorage) Set(ref *core.Reference) error { } func (r *ReferenceStorage) Get(n core.ReferenceName) (*core.Reference, error) { - if err := r.load(); err != nil { - return nil, err - } - - ref, ok := r.refs[n] - if !ok { - return nil, core.ErrReferenceNotFound - } - - return ref, nil + return r.dir.Ref(n) } func (r *ReferenceStorage) Iter() (core.ReferenceIter, error) { - if err := r.load(); err != nil { - return nil, err - } - - var refs []*core.Reference - for _, ref := range r.refs { - refs = append(refs, ref) - } - - return core.NewReferenceSliceIter(refs), nil -} - -func (r *ReferenceStorage) load() error { - if len(r.refs) != 0 { - return nil - } - refs, err := r.dir.Refs() if err != nil { - return err - } - - r.refs = make(map[core.ReferenceName]*core.Reference, 0) - for _, ref := range refs { - r.refs[ref.Name()] = ref + return nil, err } - return nil + return core.NewReferenceSliceIter(refs), nil } |