Skip to content
  • Maciej Dems's avatar
    Fixed git status retrieval splitting entries · 2cf2d4d0
    Maciej Dems authored and Elvis Angelaccio's avatar Elvis Angelaccio committed
    Summary:
    
    Sometimes, for large repositories the status is messed up (which in unlucky case causes `Commit..` command to disappear).
    
    The reason for this is that `FileViewGitPlugin::beginRetrieval` method cannot correctly parse the `git status` output. The reason for this is that `FileViewGitPlugin::readUntilZeroChar` does not return complete entry, because it is not provided fast enough.
    
    The idea of this patch is to allow the `FileViewGitPlugin::readUntilZeroChar` to wait for the remaining data.
    
    Test Plan:
    The bug depends on the race condition between the plugin code and executed `git` code. Hence it is hard to test. To fake the issue make fake git process that pauses mid entry. In such case the loop in `FileViewGitPlugin::beginRetrieval` should parse eg:
    
        !! ABCDEFGH\0x00
    
    Instead it gets:
    
        !! AB\0x00
        CDEFGH\0x00
    
    which results in two entries for non-existent files.
    
    The patch solves this issue.
    
    BUG: 413870
    FIXED-IN: 19.11.80
    
    Reviewers: elvisangelaccio
    
    Reviewed By: elvisangelaccio
    
    Differential Revision: https://phabricator.kde.org/D25187
    2cf2d4d0