aboutsummaryrefslogtreecommitdiffstats
path: root/storage/filesystem/reference.go
diff options
context:
space:
mode:
authorSantiago M. Mola <santi@mola.io>2016-11-03 17:10:43 +0100
committerMáximo Cuadros <mcuadros@gmail.com>2016-11-03 17:10:43 +0100
commit3f7fbc6c49e50eb22e3de8a5143817fa7c0c54dd (patch)
tree0bf81a6dd858278000d1d7f7afc578d993fba791 /storage/filesystem/reference.go
parent94f5e9c949963893d1c3d3e987a591ee15265327 (diff)
downloadgo-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.go40
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
}