| 597 | } |
| 598 | |
| 599 | func (r *Remote) pruneRemotes(specs []config.RefSpec, localRefs []*plumbing.Reference, remoteRefs memory.ReferenceStorage) (bool, error) { |
| 600 | var updatedPrune bool |
| 601 | for _, spec := range specs { |
| 602 | rev := spec.Reverse() |
| 603 | for _, ref := range localRefs { |
| 604 | if !rev.Match(ref.Name()) { |
| 605 | continue |
| 606 | } |
| 607 | _, err := remoteRefs.Reference(rev.Dst(ref.Name())) |
| 608 | if errors.Is(err, plumbing.ErrReferenceNotFound) { |
| 609 | updatedPrune = true |
| 610 | err := r.s.RemoveReference(ref.Name()) |
| 611 | if err != nil { |
| 612 | return false, err |
| 613 | } |
| 614 | } |
| 615 | } |
| 616 | } |
| 617 | return updatedPrune, nil |
| 618 | } |
| 619 | |
| 620 | func (r *Remote) addReferencesToUpdate( |
| 621 | refspecs []config.RefSpec, |