28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
/**
|
|
* Pure git error-message helpers, split out of git.ts so they can be unit-tested
|
|
* without importing git.ts's heavy deps (db/docker). No I/O here.
|
|
*/
|
|
|
|
/**
|
|
* The permission-denied message, tailored to the auth in use (#1509). A token/password
|
|
* credential paired with an `git@...` SSH URL is the common trap: git uses the SSH
|
|
* transport and never applies the token, so it fails with a public-key error - blaming
|
|
* "SSH credentials" then is actively misleading. Point at the real cause instead.
|
|
*/
|
|
export function permissionDeniedMessage(
|
|
authType?: string | null,
|
|
url?: string | null
|
|
): string {
|
|
const isSshUrl = !!url && url.startsWith('git@');
|
|
if (authType === 'password') {
|
|
if (isSshUrl) {
|
|
return 'Permission denied. This credential uses a token, but the repository URL is an SSH URL (git@...). Use an https:// URL for token authentication.';
|
|
}
|
|
return 'Permission denied. Check your access token and that it has repository access.';
|
|
}
|
|
if (authType === 'ssh') {
|
|
return 'Permission denied. Check your SSH key and that it is authorized for this repository.';
|
|
}
|
|
return 'Permission denied. Check your credentials.';
|
|
}
|