@@ -125,7 +125,7 @@ func RefBlame(ctx *context.Context) {
125
125
}
126
126
127
127
type blameResult struct {
128
- Parts []git.BlamePart
128
+ Parts []* git.BlamePart
129
129
UsesIgnoreRevs bool
130
130
FaultyIgnoreRevsFile bool
131
131
}
@@ -175,7 +175,9 @@ func performBlame(ctx *context.Context, repoPath string, commit *git.Commit, fil
175
175
func fillBlameResult (br * git.BlameReader , r * blameResult ) error {
176
176
r .UsesIgnoreRevs = br .UsesIgnoreRevs ()
177
177
178
- r .Parts = make ([]git.BlamePart , 0 , 5 )
178
+ previousHelper := make (map [string ]* git.BlamePart )
179
+
180
+ r .Parts = make ([]* git.BlamePart , 0 , 5 )
179
181
for {
180
182
blamePart , err := br .NextPart ()
181
183
if err != nil {
@@ -184,13 +186,23 @@ func fillBlameResult(br *git.BlameReader, r *blameResult) error {
184
186
if blamePart == nil {
185
187
break
186
188
}
187
- r .Parts = append (r .Parts , * blamePart )
189
+
190
+ if prev , ok := previousHelper [blamePart .Sha ]; ok {
191
+ if blamePart .PreviousSha == "" {
192
+ blamePart .PreviousSha = prev .PreviousSha
193
+ blamePart .PreviousPath = prev .PreviousPath
194
+ }
195
+ } else {
196
+ previousHelper [blamePart .Sha ] = blamePart
197
+ }
198
+
199
+ r .Parts = append (r .Parts , blamePart )
188
200
}
189
201
190
202
return nil
191
203
}
192
204
193
- func processBlameParts (ctx * context.Context , blameParts []git.BlamePart ) map [string ]* user_model.UserCommit {
205
+ func processBlameParts (ctx * context.Context , blameParts []* git.BlamePart ) map [string ]* user_model.UserCommit {
194
206
// store commit data by SHA to look up avatar info etc
195
207
commitNames := make (map [string ]* user_model.UserCommit )
196
208
// and as blameParts can reference the same commits multiple
@@ -232,7 +244,7 @@ func processBlameParts(ctx *context.Context, blameParts []git.BlamePart) map[str
232
244
return commitNames
233
245
}
234
246
235
- func renderBlame (ctx * context.Context , blameParts []git.BlamePart , commitNames map [string ]* user_model.UserCommit ) {
247
+ func renderBlame (ctx * context.Context , blameParts []* git.BlamePart , commitNames map [string ]* user_model.UserCommit ) {
236
248
repoLink := ctx .Repo .RepoLink
237
249
238
250
language := ""
0 commit comments