code: func prePushRefs(r io.Reader) []*git.RefUpdate {
  	scanner := bufio.NewScanner(r)
  	refs := make([]*git.RefUpdate, 0, 1)
  
  	// We can be passed multiple lines of refs
  	for scanner.Scan() {
  		line := strings.TrimSpace(scanner.Text())
  		if len(line) == 0 {
  			continue
  		}
  
  		tracerx.Printf("pre-push: %s", line)
  
  		left, right := decodeRefs(line)
  		if left.Sha == prePushDeleteBranch {
  			continue
  		}
  
  		refs = append(refs, git.NewRefUpdate(cfg.Git, cfg.PushRemote(), left, right))
  	}
  
  	return refs
  }
docs: // prePushRefs parses commit information that the pre-push git hook receives:
  //
  //   <local ref> <local sha1> <remote ref> <remote sha1>
  //
  // Each line describes a proposed update of the remote ref at the remote sha to
  // the local sha. Multiple updates can be received on multiple lines (such as
  // from 'git push --all'). These updates are typically received over STDIN.