clone: Store stderr so it is displayed on clone failure #4060
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
When GitPython raises a GitCommandError, whether the exception's
stderr attribute actually contains the standard error depends on
whether progress reporting is enabled. With progress enabled, the
standard error is stored in RemoteProgress.error_lines instead of the
exception 0.
As of 3ecc68a (2018-09-27), we assign RemoteProgress.error_lines to
our GitPythonProgressBar._last_error_lines. In the case of clone(),
we consider _last_error_lines to some extent, but it's not included in
the errors messages that we show the clone call fails with all
candidates. In the specific cases of an unknown version, this means
that we report that cloning failed without any indication that the
unknown version was the issue.
Make the standard error visible to the caller by replacing the
exception's stderr with _last_error_lines.
Fixes #4038.
As an example, this changes
into