From d53caa213799bed803ffe4f3cd523bc7dee7dfd3 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Sun, 19 Mar 2017 01:27:00 -0400 Subject: [PATCH] Adds upstream status info to status quick pick (wip) --- src/quickPicks/repoStatus.ts | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/quickPicks/repoStatus.ts b/src/quickPicks/repoStatus.ts index 409fab1..366b448 100644 --- a/src/quickPicks/repoStatus.ts +++ b/src/quickPicks/repoStatus.ts @@ -2,7 +2,7 @@ import { Iterables } from '../system'; import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard } from '../commands'; -import { GitStatusFile, IGitStatus } from '../gitService'; +import { GitStatusFile, GitUri, IGitStatus } from '../gitService'; import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem } from './quickPicks'; import * as path from 'path'; @@ -107,6 +107,38 @@ export class RepoStatusQuickPick { items.splice(0, 0, new OpenStatusFilesCommandQuickPickItem(files.filter(_ => _.status !== 'D'))); } + if (status.upstream && status.state.ahead) { + items.splice(0, 0, new CommandQuickPickItem({ + label: '$(git-commit) Show Commits Ahead', + description: `\u00a0 \u2014 \u00a0\u00a0 shows commits in \u00a0$(git-branch) ${status.branch} but not \u00a0$(git-branch) ${status.upstream}` + }, Commands.ShowQuickRepoHistory, [ + new GitUri(Uri.file(status.repoPath), { fileName: '', repoPath: status.repoPath, sha: `${status.upstream}..${status.branch}` }), + status.branch, + 0, + new CommandQuickPickItem({ + label: `go back \u21A9`, + description: `\u00a0 \u2014 \u00a0\u00a0 to \u00a0$(git-branch) ${status.branch} status` + }, Commands.ShowQuickRepoStatus) + ]) + ); + } + + if (status.upstream && status.state.behind) { + items.splice(0, 0, new CommandQuickPickItem({ + label: '$(git-commit) Show Commits Behind', + description: `\u00a0 \u2014 \u00a0\u00a0 shows commits in \u00a0$(git-branch) ${status.upstream} but not \u00a0$(git-branch) ${status.branch} (since \u00a0$(git-commit) ${status.sha.substring(0, 8)})` + }, Commands.ShowQuickRepoHistory, [ + new GitUri(Uri.file(status.repoPath), { fileName: '', repoPath: status.repoPath, sha: `${status.sha}..${status.upstream}` }), + status.upstream, + 0, + new CommandQuickPickItem({ + label: `go back \u21A9`, + description: `\u00a0 \u2014 \u00a0\u00a0 to \u00a0$(git-branch) ${status.branch} status` + }, Commands.ShowQuickRepoStatus) + ]) + ); + } + if (goBackCommand) { items.splice(0, 0, goBackCommand); } @@ -116,15 +148,13 @@ export class RepoStatusQuickPick { let syncStatus = ''; if (status.upstream) { syncStatus = status.state.ahead || status.state.behind - ? `..${status.upstream} ${status.state.behind}\u2193 ${status.state.ahead}\u2191` - : `..${status.upstream} \u27F3`; - } - else { + ? ` ${status.state.behind}\u2193 ${status.state.ahead}\u2191 ` + : ` \u27F3 `; } const pick = await window.showQuickPick(items, { matchOnDescription: true, - placeHolder: `${status.branch}${syncStatus}`, + placeHolder: `${syncStatus} ${status.branch}${status.upstream ? ` \u00a0\u2194\u00a0 ${status.upstream}` : ''}`, ignoreFocusOut: getQuickPickIgnoreFocusOut(), onDidSelectItem: (item: QuickPickItem) => { scope.setKeyCommand('right', item);