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

Details

Committed
elvisangelaccioNov 10 2019, 9:16 PM
Reviewer
elvisangelaccio
Differential Revision
D25187: Fixed git status retrieval splitting entries
Parents
R449:0f39869f5134: GIT_SILENT made messages (after extraction)
Branches
Unknown
Tags
Unknown
References
tag: v19.11.80