From 700ef1325d6eec99c7eebdd79197356e86637c5f Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 28 Feb 2017 08:46:18 -0800 Subject: [PATCH] Add telemetry to new git.clone action (fixes #21563) --- extensions/git/src/commands.ts | 26 ++++++++++++++----- .../electron-browser/vs_code_welcome_page.ts | 1 + .../page/electron-browser/welcomePage.css | 12 +++++++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 5ad8ce2d382..2cd58b7b43d 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -170,13 +170,14 @@ export class CommandCenter { } @command('git.clone') - async clone(): Promise { + async clone(telemetryData: { [key: string]: any }): Promise { const url = await window.showInputBox({ prompt: localize('repourl', "Repository URL"), ignoreFocusOut: true }); if (!url) { + this.telemetryReporter.sendTelemetryEvent('clone', { ...telemetryData, outcome: 'no_URL' }); return; } @@ -187,18 +188,31 @@ export class CommandCenter { }); if (!parentPath) { + this.telemetryReporter.sendTelemetryEvent('clone', { ...telemetryData, outcome: 'no_directory' }); return; } const clonePromise = this.model.git.clone(url, parentPath); window.setStatusBarMessage(localize('cloning', "Cloning git repository..."), clonePromise); - const repositoryPath = await clonePromise; - const open = localize('openrepo', "Open Repository"); - const result = await window.showInformationMessage(localize('proposeopen', "Would you like to open the cloned repository?"), open); + try { + const repositoryPath = await clonePromise; - if (result === open) { - commands.executeCommand('vscode.openFolder', Uri.file(repositoryPath)); + const open = localize('openrepo', "Open Repository"); + const result = await window.showInformationMessage(localize('proposeopen', "Would you like to open the cloned repository?"), open); + + const openFolder = result === open; + this.telemetryReporter.sendTelemetryEvent('clone', { ...telemetryData, outcome: 'success' }, { openFolder: openFolder ? 1 : 0 }); + if (openFolder) { + commands.executeCommand('vscode.openFolder', Uri.file(repositoryPath)); + } + } catch (err) { + if (/already exists and is not an empty directory/.test(err && err.stderr || '')) { + this.telemetryReporter.sendTelemetryEvent('clone', { ...telemetryData, outcome: 'directory_not_empty' }); + } else { + this.telemetryReporter.sendTelemetryEvent('clone', { ...telemetryData, outcome: 'error' }); + } + throw err; } } diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.ts b/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.ts index 996edeaba91..c080c0c6040 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.ts +++ b/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.ts @@ -26,6 +26,7 @@ export default () => `
  • ${escape(localize('welcomePage.openFolder', "Open folder..."))}
  • ${escape(localize('welcomePage.openFolder', "Open folder..."))}
  • ${escape(localize('welcomePage.cloneGitRepository', "Clone Git repository..."))}
  • +
  • ${escape(localize('welcomePage.cloneGitRepository', "Clone Git repository..."))}
  • diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css index 9407d8f9807..e8251ac155d 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css +++ b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css @@ -289,6 +289,15 @@ .monaco-workbench.linux > .part.editor > .content .welcomePage .linux-only { display: initial; } +.monaco-workbench.mac > .part.editor > .content .welcomePage li.mac-only { + display: list-item; +} +.monaco-workbench.windows > .part.editor > .content .welcomePage li.windows-only { + display: list-item; +} +.monaco-workbench.linux > .part.editor > .content .welcomePage li.linux-only { + display: list-item; +} .monaco-workbench > .part.editor > .content .welcomePageContainer .scm-only { display: none; @@ -296,6 +305,9 @@ .monaco-workbench > .part.editor > .content .welcomePageContainer.scmEnabled .scm-only { display: initial; } +.monaco-workbench > .part.editor > .content .welcomePageContainer.scmEnabled li.scm-only { + display: list-item; +} .monaco-workbench > .part.editor > .content .welcomePageContainer.scmEnabled .git-only { display: none; } \ No newline at end of file