425425--- @param seek ? integer
426426--- @return string[] namestat
427427--- @return string[] numstat
428+ --- @return string[] fullstat
428429--- @return integer data_end # First unprocessed data index. Marks the last index of stat data +1.
429430local function structure_stat_data (data , seek )
430- local namestat , numstat = {}, {}
431+ local namestat , numstat , fullstat = {}, {}, {}
431432 local i = seek or 1
432433
433434 while data [i ] do
@@ -436,13 +437,12 @@ local function structure_stat_data(data, seek)
436437 elseif data [i ]:match (" ^[%d-]+\t [%d-]+\t " ) then
437438 numstat [# numstat + 1 ] = data [i ]
438439 else
439- -- We have hit unrelated data
440- break
440+ fullstat [# fullstat + 1 ] = data [i ]
441441 end
442442 i = i + 1
443443 end
444444
445- return namestat , numstat , i
445+ return namestat , numstat , fullstat , i
446446end
447447
448448--- @class GitAdapter.LogData
458458--- @field subject string
459459--- @field namestat string[]
460460--- @field numstat string[]
461+ --- @field fullstat string[]
461462--- @field diff ? diff.FileEntry[]
462463--- @field valid boolean
463464
@@ -482,9 +483,10 @@ local function structure_fh_data(stat_data, keep_diff)
482483 subject = stat_data [8 ] and stat_data [8 ]:sub (3 ) or " " ,
483484 }
484485
485- local namestat , numstat = structure_stat_data (stat_data , 9 )
486+ local namestat , numstat , fullstat = structure_stat_data (stat_data , 9 )
486487 ret .namestat = namestat
487488 ret .numstat = numstat
489+ ret .fullstat = fullstat
488490
489491 if keep_diff then
490492 ret .diff = vcs_utils .parse_diff (stat_data )
@@ -571,6 +573,7 @@ function GitAdapter:stream_fh_data(state)
571573 " core.quotePath=false" ,
572574 " log" ,
573575 " --pretty=format:%x00%n" .. GitAdapter .COMMIT_PRETTY_FMT ,
576+ " --stat" ,
574577 " --numstat" ,
575578 " --raw" ,
576579 state .prepared_log_opts .flags ,
@@ -1034,6 +1037,7 @@ GitAdapter.fh_retry_commit = async.wrap(function(self, rev_arg, state, opt, call
10341037 " core.quotePath=false" ,
10351038 " show" ,
10361039 " --pretty=format:" .. GitAdapter .COMMIT_PRETTY_FMT ,
1040+ " --stat" ,
10371041 " --numstat" ,
10381042 " --raw" ,
10391043 " --diff-merges=" .. state .log_options .diff_merges ,
@@ -1161,6 +1165,7 @@ function GitAdapter:parse_fh_data(data, commit, state)
11611165
11621166 local stats = {
11631167 additions = tonumber (data .numstat [i ]:match (" ^%d+" )),
1168+ fullstats = data .fullstat [i ],
11641169 deletions = tonumber (data .numstat [i ]:match (" ^%d+%s+(%d+)" )),
11651170 }
11661171
0 commit comments