code: func (r *Reader) Header() (t plumbing.ObjectType, size int64, err error) {
  	var raw []byte
  	raw, err = r.readUntil(' ')
  	if err != nil {
  		return
  	}
  
  	t, err = plumbing.ParseObjectType(string(raw))
  	if err != nil {
  		return
  	}
  
  	raw, err = r.readUntil(0)
  	if err != nil {
  		return
  	}
  
  	size, err = strconv.ParseInt(string(raw), 10, 64)
  	if err != nil {
  		err = ErrHeader
  		return
  	}
  
  	defer r.prepareForRead(t, size)
  	return
  }
docs: // Header reads the type and the size of object, and prepares the reader for read