aboutsummaryrefslogtreecommitdiffstats
path: root/blame.go
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2018-10-16 00:12:10 +0200
committerMáximo Cuadros <mcuadros@gmail.com>2018-10-16 00:12:10 +0200
commitc4be04433cf894cead23cd1de2be54c2886e44ad (patch)
tree2f4847115bb33bd571b2d8bcf0e413f246dd2547 /blame.go
parent8153e040f68da6002096ef177a11510f4fb06769 (diff)
downloadgo-git-c4be04433cf894cead23cd1de2be54c2886e44ad.tar.gz
blame: fix edge case with missing \n in content length causing mismatched length error
Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
Diffstat (limited to 'blame.go')
-rw-r--r--blame.go21
1 files changed, 16 insertions, 5 deletions
diff --git a/blame.go b/blame.go
index 349cdd9..adb72d5 100644
--- a/blame.go
+++ b/blame.go
@@ -123,14 +123,25 @@ func newLine(author, text string, date time.Time, hash plumbing.Hash) *Line {
}
func newLines(contents []string, commits []*object.Commit) ([]*Line, error) {
- if len(contents) != len(commits) {
- return nil, errors.New("contents and commits have different length")
+ lcontents := len(contents)
+ lcommits := len(commits)
+
+ if lcontents != lcommits {
+ if lcontents == lcommits-1 && contents[lcontents-1] != "\n" {
+ contents = append(contents, "\n")
+ } else {
+ return nil, errors.New("contents and commits have different length")
+ }
}
- result := make([]*Line, 0, len(contents))
+
+ result := make([]*Line, 0, lcontents)
for i := range contents {
- l := newLine(commits[i].Author.Email, contents[i], commits[i].Author.When, commits[i].Hash)
- result = append(result, l)
+ result = append(result, newLine(
+ commits[i].Author.Email, contents[i],
+ commits[i].Author.When, commits[i].Hash,
+ ))
}
+
return result, nil
}