Fixed git status retrieval splitting entries
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