@@ -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
}
@@ -170,7 +170,9 @@ func performBlame(ctx *context.Context, repoPath string, commit *git.Commit, fil
170
170
func fillBlameResult (br * git.BlameReader , r * blameResult ) error {
171
171
r .UsesIgnoreRevs = br .UsesIgnoreRevs ()
172
172
173
- r .Parts = make ([]git.BlamePart , 0 , 5 )
173
+ previousHelper := make (map [string ]* git.BlamePart )
174
+
175
+ r .Parts = make ([]* git.BlamePart , 0 , 5 )
174
176
for {
175
177
blamePart , err := br .NextPart ()
176
178
if err != nil {
@@ -179,13 +181,23 @@ func fillBlameResult(br *git.BlameReader, r *blameResult) error {
179
181
if blamePart == nil {
180
182
break
181
183
}
182
- r .Parts = append (r .Parts , * blamePart )
184
+
185
+ if prev , ok := previousHelper [blamePart .Sha ]; ok {
186
+ if blamePart .PreviousSha == "" {
187
+ blamePart .PreviousSha = prev .PreviousSha
188
+ blamePart .PreviousPath = prev .PreviousPath
189
+ }
190
+ } else {
191
+ previousHelper [blamePart .Sha ] = blamePart
192
+ }
193
+
194
+ r .Parts = append (r .Parts , blamePart )
183
195
}
184
196
185
197
return nil
186
198
}
187
199
188
- func processBlameParts (ctx * context.Context , blameParts []git.BlamePart ) map [string ]* user_model.UserCommit {
200
+ func processBlameParts (ctx * context.Context , blameParts []* git.BlamePart ) map [string ]* user_model.UserCommit {
189
201
// store commit data by SHA to look up avatar info etc
190
202
commitNames := make (map [string ]* user_model.UserCommit )
191
203
// and as blameParts can reference the same commits multiple
@@ -227,7 +239,7 @@ func processBlameParts(ctx *context.Context, blameParts []git.BlamePart) map[str
227
239
return commitNames
228
240
}
229
241
230
- func renderBlame (ctx * context.Context , blameParts []git.BlamePart , commitNames map [string ]* user_model.UserCommit ) {
242
+ func renderBlame (ctx * context.Context , blameParts []* git.BlamePart , commitNames map [string ]* user_model.UserCommit ) {
231
243
repoLink := ctx .Repo .RepoLink
232
244
233
245
language := ""
0 commit comments