Transform broken repo error message to be more helpful (#1251)
This commit is contained in:
parent
5a3395040c
commit
0396bf92a9
2 changed files with 27 additions and 13 deletions
|
@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
- On Android 11, Autofill will use the new [inline autofill](https://developer.android.com/guide/topics/text/ime-autofill#configure-provider) UI that integrates Autofill results into your keyboard app.
|
- On Android 11, Autofill will use the new [inline autofill](https://developer.android.com/guide/topics/text/ime-autofill#configure-provider) UI that integrates Autofill results into your keyboard app.
|
||||||
- Invalid `.gpg-id` files can now be fixed automatically by deleting them and then trying to create a new password.
|
- Invalid `.gpg-id` files can now be fixed automatically by deleting them and then trying to create a new password.
|
||||||
|
- Suggest users to re-clone repository when it is deemed to be broken
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
@ -72,19 +72,7 @@ abstract class BaseGitActivity : ContinuationContainerActivity() {
|
||||||
GitOp.BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(this)
|
GitOp.BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(this)
|
||||||
GitOp.RESET -> ResetToRemoteOperation(this)
|
GitOp.RESET -> ResetToRemoteOperation(this)
|
||||||
}
|
}
|
||||||
return op.executeAfterAuthentication(GitSettings.authMode).mapError { throwable ->
|
return op.executeAfterAuthentication(GitSettings.authMode).mapError(::transformGitError)
|
||||||
val err = rootCauseException(throwable)
|
|
||||||
if (err.message?.contains("cannot open additional channels") == true) {
|
|
||||||
GitSettings.useMultiplexing = false
|
|
||||||
SSHException(DisconnectReason.TOO_MANY_CONNECTIONS, "The server does not support multiple Git operations per SSH session. Please try again, a slower fallback mode will be used.")
|
|
||||||
} else if (err is TransportException && err.disconnectReason == DisconnectReason.HOST_KEY_NOT_VERIFIABLE) {
|
|
||||||
SSHException(DisconnectReason.HOST_KEY_NOT_VERIFIABLE,
|
|
||||||
"WARNING: The remote host key has changed. If this is expected, please go to Git server settings and clear the saved host key."
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun finishOnSuccessHandler(@Suppress("UNUSED_PARAMETER") nothing: Unit) {
|
fun finishOnSuccessHandler(@Suppress("UNUSED_PARAMETER") nothing: Unit) {
|
||||||
|
@ -115,6 +103,31 @@ abstract class BaseGitActivity : ContinuationContainerActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes the result of [launchGitOperation] and applies any necessary transformations
|
||||||
|
* on the [throwable] returned from it
|
||||||
|
*/
|
||||||
|
private fun transformGitError(throwable: Throwable): Throwable {
|
||||||
|
val err = rootCauseException(throwable)
|
||||||
|
return when {
|
||||||
|
err.message?.contains("cannot open additional channels") == true -> {
|
||||||
|
GitSettings.useMultiplexing = false
|
||||||
|
SSHException(DisconnectReason.TOO_MANY_CONNECTIONS, "The server does not support multiple Git operations per SSH session. Please try again, a slower fallback mode will be used.")
|
||||||
|
}
|
||||||
|
err.message?.contains("int org.eclipse.jgit.lib.AnyObjectId.w1") == true -> {
|
||||||
|
IllegalStateException("Your local repository appears to be an incomplete Git clone, please delete and re-clone from settings")
|
||||||
|
}
|
||||||
|
err is TransportException && err.disconnectReason == DisconnectReason.HOST_KEY_NOT_VERIFIABLE -> {
|
||||||
|
SSHException(DisconnectReason.HOST_KEY_NOT_VERIFIABLE,
|
||||||
|
"WARNING: The remote host key has changed. If this is expected, please go to Git server settings and clear the saved host key."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a given [Throwable] is the result of an error caused by the user cancelling the
|
* Check if a given [Throwable] is the result of an error caused by the user cancelling the
|
||||||
* operation.
|
* operation.
|
||||||
|
|
Loading…
Reference in a new issue