Add telemetry to new git.clone action (fixes #21563)

This commit is contained in:
Christof Marti 2017-02-28 08:46:18 -08:00
parent 84d25d491b
commit 700ef1325d
3 changed files with 33 additions and 6 deletions

View file

@ -170,13 +170,14 @@ export class CommandCenter {
}
@command('git.clone')
async clone(): Promise<void> {
async clone(telemetryData: { [key: string]: any }): Promise<void> {
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;
}
}

View file

@ -26,6 +26,7 @@ export default () => `
<li class="mac-only"><a href="command:workbench.action.files.openFileFolder">${escape(localize('welcomePage.openFolder', "Open folder..."))}</a></li>
<li class="windows-only linux-only"><a href="command:workbench.action.files.openFolder">${escape(localize('welcomePage.openFolder', "Open folder..."))}</a></li>
<li class="git-only"><a href="command:workbench.action.git.clone">${escape(localize('welcomePage.cloneGitRepository', "Clone Git repository..."))}</a></li>
<li class="scm-only"><a href="command:git.clone">${escape(localize('welcomePage.cloneGitRepository', "Clone Git repository..."))}</a></li>
</ul>
</div>
<div class="section recent">

View file

@ -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;
}