From c0021de2a165ab8fe2aae1a68f5278c646ad82ec Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 13 Sep 2018 17:29:28 +0200 Subject: [PATCH] :lipstick: --- extensions/git/src/commands.ts | 29 +++++++++++++++++------------ extensions/git/src/git.ts | 24 +++++++++--------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 8c5534a2b91..10d32de5984 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -1848,6 +1848,11 @@ export class CommandCenter { let message: string; let type: 'error' | 'warning' = 'error'; + const choices = new Map void>(); + const openOutputChannelChoice = localize('open git log', "Open Git Log"); + const outputChannel = this.outputChannel as OutputChannel; + choices.set(openOutputChannelChoice, () => outputChannel.show()); + switch (err.gitErrorCode) { case GitErrorCodes.DirtyWorkTree: message = localize('clean repo', "Please clean your repository working tree before checkout."); @@ -1862,11 +1867,8 @@ export class CommandCenter { break; case GitErrorCodes.NoUserNameConfigured: case GitErrorCodes.NoUserEmailConfigured: - message = localize('missing user info', "Make sure that user.email and user.name are configured correctly.\n\n{0}\n{1}\n\n{2}\n{3}", - "current user.email: " + err.userEmail || "", - "current user.name: " + err.userName || "", - "git config --global user.email \"you@example.com\"", - "git config --global user.name \"Your Name\""); + message = localize('missing user info', "Make sure you configure your 'user.name' and 'user.email' in git."); + choices.set(localize('learn more', "Learn More"), () => commands.executeCommand('vscode.open', Uri.parse('https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup'))); break; default: const hint = (err.stderr || err.message || String(err)) @@ -1888,14 +1890,17 @@ export class CommandCenter { return; } - const outputChannel = this.outputChannel as OutputChannel; - const openOutputChannelChoice = localize('open git log', "Open Git Log"); - const choice = type === 'error' - ? await window.showErrorMessage(message, options, openOutputChannelChoice) - : await window.showWarningMessage(message, options, openOutputChannelChoice); + const allChoices = Array.from(choices.keys()); + const result = type === 'error' + ? await window.showErrorMessage(message, options, ...allChoices) + : await window.showWarningMessage(message, options, ...allChoices); + + if (result) { + const resultFn = choices.get(result); - if (choice === openOutputChannelChoice) { - outputChannel.show(); + if (resultFn) { + resultFn(); + } } }); }; diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index df93ffcc2b4..f66646bb2c5 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -998,26 +998,20 @@ export class Repository { throw commitErr; } - let userName, userEmail; - try { - const nameResult = await this.run(['config', '--get-all', 'user.name']); - userName = nameResult.stdout.split('\n').filter(l => !!l).pop(); - } catch (err) { } + await this.run(['config', '--get-all', 'user.name']); + } catch (err) { + err.gitErrorCode = GitErrorCodes.NoUserNameConfigured; + throw err; + } try { - const emailResult = await this.run(['config', '--get-all', 'user.email']); - userEmail = emailResult.stdout.split('\n').filter(l => !!l).pop(); - } catch (err) { } - - if (userName && userEmail) { - throw commitErr; + await this.run(['config', '--get-all', 'user.email']); + } catch (err) { + err.gitErrorCode = GitErrorCodes.NoUserEmailConfigured; + throw err; } - commitErr.gitErrorCode = !userName ? GitErrorCodes.NoUserNameConfigured : GitErrorCodes.NoUserEmailConfigured; - commitErr.userName = userName; - commitErr.userEmail = userEmail; - throw commitErr; } -- GitLab