diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-09-04 13:53:55 +0200 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2017-09-04 13:53:55 +0200 |
commit | 38b9d5711a0d8156a5b5b1e5dd9972558b1389a7 (patch) | |
tree | 6f06300b57c4d6d11b1c5d3b2b01d6f6c8737634 /remote.go | |
parent | c20028f6a4d0038d59898392aafe13baa9e84040 (diff) | |
download | go-git-38b9d5711a0d8156a5b5b1e5dd9972558b1389a7.tar.gz |
Remote.Fetch Tags logic improvement and fix NoTags
Diffstat (limited to 'remote.go')
-rw-r--r-- | remote.go | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -279,7 +279,7 @@ func (r *Remote) fetch(ctx context.Context, o *FetchOptions) (storer.ReferenceSt } } - updated, err := r.updateLocalReferenceStorage(o.RefSpecs, refs, remoteRefs) + updated, err := r.updateLocalReferenceStorage(o.RefSpecs, refs, remoteRefs, o.Tags) if err != nil { return nil, err } @@ -481,10 +481,17 @@ func getHaves(localRefs storer.ReferenceStorer) ([]plumbing.Hash, error) { return result, nil } -func calculateRefs(spec []config.RefSpec, +const refspecTag = "+refs/tags/*:refs/tags/*" + +func calculateRefs( + spec []config.RefSpec, remoteRefs storer.ReferenceStorer, - tags TagFetchMode, + tagMode TagMode, ) (memory.ReferenceStorage, error) { + if tagMode == AllTags { + spec = append(spec, refspecTag) + } + iter, err := remoteRefs.IterReferences() if err != nil { return nil, err @@ -493,9 +500,7 @@ func calculateRefs(spec []config.RefSpec, refs := make(memory.ReferenceStorage, 0) return refs, iter.ForEach(func(ref *plumbing.Reference) error { if !config.MatchAny(spec, ref.Name()) { - if !ref.Name().IsTag() || tags != AllTags { - return nil - } + return nil } if ref.Type() == plumbing.SymbolicReference { @@ -645,6 +650,7 @@ func buildSidebandIfSupported(l *capability.List, reader io.Reader, p sideband.P func (r *Remote) updateLocalReferenceStorage( specs []config.RefSpec, fetchedRefs, remoteRefs memory.ReferenceStorage, + tagMode TagMode, ) (updated bool, err error) { isWildcard := true for _, spec := range specs { @@ -674,6 +680,10 @@ func (r *Remote) updateLocalReferenceStorage( } } + if tagMode == NoTags { + return updated, nil + } + tags := fetchedRefs if isWildcard { tags = remoteRefs |