code: func (b *blame) GoString() string {
  	var buf bytes.Buffer
  
  	file, err := b.fRev.File(b.path)
  	if err != nil {
  		panic("PrettyPrint: internal error in repo.Data")
  	}
  	contents, err := file.Contents()
  	if err != nil {
  		panic("PrettyPrint: internal error in repo.Data")
  	}
  
  	lines := strings.Split(contents, "\n")
  	// max line number length
  	mlnl := len(strconv.Itoa(len(lines)))
  	// max author length
  	mal := b.maxAuthorLength()
  	format := fmt.Sprintf("%%s (%%-%ds %%%dd) %%s\n",
  		mal, mlnl)
  
  	fVs := b.graph[len(b.graph)-1]
  	for ln, v := range fVs {
  		fmt.Fprintf(&buf, format, v.Hash.String()[:8],
  			prettyPrintAuthor(fVs[ln]), ln+1, lines[ln])
  	}
  	return buf.String()
  }
docs: // GoString prints the results of a Blame using git-blame's style.