66 "gopkg.in/src-d/go-git.v4/storage"
77)
88
9+ // ReferenceStorage implements the storer.ReferenceStorage for the transactional package.
910type ReferenceStorage struct {
1011 storer.ReferenceStorer
1112 temporal storer.ReferenceStorer
@@ -19,20 +20,24 @@ type ReferenceStorage struct {
1920 packRefs bool
2021}
2122
22- func NewReferenceStorage (s , temporal storer.ReferenceStorer ) * ReferenceStorage {
23+ // NewReferenceStorage returns a new ReferenceStorer based on a base storer and
24+ // a temporal storer.
25+ func NewReferenceStorage (base , temporal storer.ReferenceStorer ) * ReferenceStorage {
2326 return & ReferenceStorage {
24- ReferenceStorer : s ,
27+ ReferenceStorer : base ,
2528 temporal : temporal ,
2629
2730 deleted : make (map [plumbing.ReferenceName ]struct {}, 0 ),
2831 }
2932}
3033
34+ // SetReference honors the storer.ReferenceStorer interface.
3135func (r * ReferenceStorage ) SetReference (ref * plumbing.Reference ) error {
3236 delete (r .deleted , ref .Name ())
3337 return r .temporal .SetReference (ref )
3438}
3539
40+ // SetReference honors the storer.ReferenceStorer interface.
3641func (r * ReferenceStorage ) CheckAndSetReference (ref , old * plumbing.Reference ) error {
3742 if old == nil {
3843 return r .SetReference (ref )
@@ -54,6 +59,7 @@ func (r *ReferenceStorage) CheckAndSetReference(ref, old *plumbing.Reference) er
5459 return r .SetReference (ref )
5560}
5661
62+ // Reference honors the storer.ReferenceStorer interface.
5763func (r ReferenceStorage ) Reference (n plumbing.ReferenceName ) (* plumbing.Reference , error ) {
5864 if _ , deleted := r .deleted [n ]; deleted {
5965 return nil , plumbing .ErrReferenceNotFound
@@ -67,6 +73,7 @@ func (r ReferenceStorage) Reference(n plumbing.ReferenceName) (*plumbing.Referen
6773 return ref , err
6874}
6975
76+ // IterReferences honors the storer.ReferenceStorer interface.
7077func (r ReferenceStorage ) IterReferences () (storer.ReferenceIter , error ) {
7178 baseIter , err := r .ReferenceStorer .IterReferences ()
7279 if err != nil {
@@ -84,6 +91,7 @@ func (r ReferenceStorage) IterReferences() (storer.ReferenceIter, error) {
8491 }), nil
8592}
8693
94+ // CountLooseRefs honors the storer.ReferenceStorer interface.
8795func (r ReferenceStorage ) CountLooseRefs () (int , error ) {
8896 tc , err := r .temporal .CountLooseRefs ()
8997 if err != nil {
@@ -98,16 +106,20 @@ func (r ReferenceStorage) CountLooseRefs() (int, error) {
98106 return tc + bc , nil
99107}
100108
109+ // PackRefs honors the storer.ReferenceStorer interface.
101110func (r ReferenceStorage ) PackRefs () error {
102111 r .packRefs = true
103112 return nil
104113}
105114
115+ // RemoveReference honors the storer.ReferenceStorer interface.
106116func (r ReferenceStorage ) RemoveReference (n plumbing.ReferenceName ) error {
107117 r .deleted [n ] = struct {}{}
108118 return r .temporal .RemoveReference (n )
109119}
110120
121+ // Commit it copies the reference information of the temporal storage into the
122+ // base storage.
111123func (r ReferenceStorage ) Commit () error {
112124 for name := range r .deleted {
113125 if err := r .ReferenceStorer .RemoveReference (name ); err != nil {
0 commit comments