code: func (r *Repository) FetchContext(ctx context.Context, o *FetchOptions) error {
  	if err := o.Validate(); err != nil {
  		return err
  	}
  
  	remote, err := r.Remote(o.RemoteName)
  	if err != nil {
  		return err
  	}
  
  	return remote.FetchContext(ctx, o)
  }
docs: // FetchContext fetches references along with the objects necessary to complete
  // their histories, from the remote named as FetchOptions.RemoteName.
  //
  // Returns nil if the operation is successful, NoErrAlreadyUpToDate if there are
  // no changes to be fetched, or an error.
  //
  // 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.