| Summary: | Wrong git status determination | ||
|---|---|---|---|
| Product: | [Applications] dolphin | Reporter: | Maciej Dems <macdems> |
| Component: | plugins: git | Assignee: | Sebastian Dörner <sebastian> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | dolphin-bugs-null, elvis.angelaccio |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://commits.kde.org/dolphin-plugins/2cf2d4d02912dd6e285350b30f00f24eb092ad9c | Version Fixed/Implemented In: | 19.11.80 |
| Sentry Crash Report: | |||
| Attachments: | Patch fixing the reported issue | ||
Do you mind uploading the patch on phabricator? See https://community.kde.org/Infrastructure/Phabricator for instructions. Git commit 2cf2d4d02912dd6e285350b30f00f24eb092ad9c by Elvis Angelaccio, on behalf of Maciej Dems.
Committed on 10/11/2019 at 21:16.
Pushed by elvisangelaccio into branch 'release/19.12'.
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.
FIXED-IN: 19.11.80
Reviewers: elvisangelaccio
Reviewed By: elvisangelaccio
Differential Revision: https://phabricator.kde.org/D25187
M +7 -2 git/fileviewgitplugin.cpp
https://commits.kde.org/dolphin-plugins/2cf2d4d02912dd6e285350b30f00f24eb092ad9c
|
Created attachment 123747 [details] Patch fixing the reported issue Sometimes, for large repositories the status is messed up (which in unlucky case cases `Commit..` command to disappear). The reason tho 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. I have made a patch that fixes this issue (see attachment). The idea is to allow the `FileViewGitPlugin::readUntilZeroChar` to wait for the remaining data.