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 ,
@@ -1162,6 +1166,7 @@ function GitAdapter:parse_fh_data(data, commit, state)
11621166    local  stats  =  {
11631167      additions  =  tonumber (data .numstat [i ]:match (" ^%d+" 
11641168      deletions  =  tonumber (data .numstat [i ]:match (" ^%d+%s+(%d+)" 
1169+       fullstat  =  data .fullstat [i ],
11651170    }
11661171
11671172    if  not  stats .additions  or  not  stats .deletions  then 
0 commit comments