Exemple #1
0
func (s *session) SendPack(req *packp.ReferenceUpdateRequest) (*packp.ReportStatus, error) {
	if _, err := s.AdvertisedReferences(); err != nil {
		return nil, err
	}

	s.packRun = true

	if err := req.Encode(s.Stdin); err != nil {
		return nil, err
	}

	if !req.Capabilities.Supports(capability.ReportStatus) {
		// If we have neither report-status or sideband, we can only
		// check return value error.
		return nil, s.Command.Wait()
	}

	report := packp.NewReportStatus()
	if err := report.Decode(s.Stdout); err != nil {
		return nil, err
	}

	if err := report.Error(); err != nil {
		return report, err
	}

	return report, s.Command.Wait()
}