code: func (r *Repository) PushContext(ctx context.Context, o *PushOptions) error {
  	if err := o.Validate(); err != nil {
  		return err
  	}
  
  	remote, err := r.Remote(o.RemoteName)
  	if err != nil {
  		return err
  	}
  
  	return remote.PushContext(ctx, o)
  }
docs: // PushContext performs a push to the remote. Returns NoErrAlreadyUpToDate if
  // the remote was already up-to-date, from the remote named as
  // FetchOptions.RemoteName.
  //
  // The provided Context must be non-nil. If the context expires before the
  // operation is complete, an error is returned. The context only affects to the
  // transport operations.