code: func (s *RevListScanner) scan() ([]byte, string, error) {
  	if !s.s.Scan() {
  		return nil, "", s.s.Err()
  	}
  
  	line := strings.TrimSpace(s.s.Text())
  	if len(line) < 40 {
  		return nil, "", nil
  	}
  
  	sha1, err := hex.DecodeString(line[:40])
  	if err != nil {
  		return nil, "", err
  	}
  
  	var name string
  	if len(line) > 40 {
  		name = line[41:]
  	}
  
  	return sha1, name, nil
  }
docs: // scan provides the internal implementation of scanning a line of text from the
  // output of `git-rev-list(1)`.