Fixed git status retrieval splitting entries

Authored by macdems on Nov 10 2019, 9:15 PM.

Description

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