(rs config.RefSpec, remoteRefs storer.ReferenceStorer, localCommit plumbing.Hash, req *packp.ReferenceUpdateRequest)
| 725 | } |
| 726 | |
| 727 | func (r *Remote) addCommit(rs config.RefSpec, |
| 728 | remoteRefs storer.ReferenceStorer, localCommit plumbing.Hash, |
| 729 | req *packp.ReferenceUpdateRequest) error { |
| 730 | |
| 731 | if rs.IsWildcard() { |
| 732 | return errors.New("can't use wildcard together with hash refspecs") |
| 733 | } |
| 734 | |
| 735 | cmd := &packp.Command{ |
| 736 | Name: rs.Dst(""), |
| 737 | Old: plumbing.ZeroHash, |
| 738 | New: localCommit, |
| 739 | } |
| 740 | remoteRef, err := remoteRefs.Reference(cmd.Name) |
| 741 | if err == nil { |
| 742 | if remoteRef.Type() != plumbing.HashReference { |
| 743 | // TODO: check actual git behavior here |
| 744 | return nil |
| 745 | } |
| 746 | |
| 747 | cmd.Old = remoteRef.Hash() |
| 748 | } else if err != plumbing.ErrReferenceNotFound { |
| 749 | return err |
| 750 | } |
| 751 | if cmd.Old == cmd.New { |
| 752 | return nil |
| 753 | } |
| 754 | if !rs.IsForceUpdate() { |
| 755 | if err := checkFastForwardUpdate(r.s, remoteRefs, cmd); err != nil { |
| 756 | return err |
| 757 | } |
| 758 | } |
| 759 | |
| 760 | req.Commands = append(req.Commands, cmd) |
| 761 | return nil |
| 762 | } |
| 763 | |
| 764 | func (r *Remote) addReferenceIfRefSpecMatches(rs config.RefSpec, |
| 765 | remoteRefs storer.ReferenceStorer, localRef *plumbing.Reference, |
no test coverage detected