Fixed git status retrieval splitting entries
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.
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:
Instead it gets:
!! AB\0x00 CDEFGH\0x00
which results in two entries for non-existent files.
The patch solves this issue.
Reviewed By: elvisangelaccio
Differential Revision: https://phabricator.kde.org/D25187