From 133e999097f5185a7b22574941f1b0f3217451e9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 4 Jan 2019 15:16:45 +0100 Subject: [PATCH] :lipstick: --- extensions/git/package.json | 5 ----- extensions/git/package.nls.json | 1 - extensions/git/src/commands.ts | 38 ++++++++++++++++++--------------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/extensions/git/package.json b/extensions/git/package.json index 8c672d1e668..6f75b8c4967 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -240,11 +240,6 @@ "title": "%command.branch%", "category": "Git" }, - { - "command": "git.branchFrom", - "title": "%command.branchFrom%", - "category": "Git" - }, { "command": "git.deleteBranch", "title": "%command.deleteBranch%", diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json index 24fa4123ad3..41850a1f77d 100644 --- a/extensions/git/package.nls.json +++ b/extensions/git/package.nls.json @@ -32,7 +32,6 @@ "command.undoCommit": "Undo Last Commit", "command.checkout": "Checkout to...", "command.branch": "Create Branch...", - "command.branchFrom": "Create Branch From...", "command.deleteBranch": "Delete Branch...", "command.renameBranch": "Rename Branch...", "command.merge": "Merge Branch...", diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 9a65a0aec92..42b23989051 100755 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -103,6 +103,15 @@ class CreateBranchItem implements QuickPickItem { } } +class HEADItem implements QuickPickItem { + + constructor(private repository: Repository) { } + + get label(): string { return 'HEAD'; } + get description(): string { return (this.repository.HEAD && this.repository.HEAD.commit || '').substr(0, 8); } + get alwaysShow(): boolean { return true; } +} + interface CommandOptions { repository?: boolean; diff?: boolean; @@ -154,7 +163,7 @@ async function categorizeResourceByResolution(resources: Resource[]): Promise<{ return { merge, resolved, unresolved, deletionConflicts }; } -function repositoryRefsToItems(repository: Repository): Array { +function createCheckoutItems(repository: Repository): CheckoutItem[] { const config = workspace.getConfiguration('git'); const checkoutType = config.get('checkoutType') || 'all'; const includeTags = checkoutType === 'all' || checkoutType === 'tags'; @@ -170,7 +179,7 @@ function repositoryRefsToItems(repository: Repository): Array { return [...heads, ...tags, ...remoteHeads]; } -async function inputNameForBranch(): Promise { +async function getBranchNameFromUser(): Promise { const config = workspace.getConfiguration('git'); const branchWhitespaceChar = config.get('branchWhitespaceChar')!; const branchValidationRegex = config.get('branchValidationRegex')!; @@ -1437,7 +1446,7 @@ export class CommandCenter { } const createBranch = new CreateBranchItem(this); - const picks = [createBranch, ...repositoryRefsToItems(repository)]; + const picks = [createBranch, ...createCheckoutItems(repository)]; const placeHolder = localize('select a ref to checkout', 'Select a ref to checkout'); const choice = await window.showQuickPick(picks, { placeHolder }); @@ -1450,27 +1459,22 @@ export class CommandCenter { } @command('git.branch', { repository: true }) - async branch(repository: Repository, ref?: string): Promise { - const name = await inputNameForBranch(); + async branch(repository: Repository): Promise { + const picks = [new HEADItem(repository), ...createCheckoutItems(repository)]; + const placeHolder = localize('select a ref to create a new branch from', 'Select a ref to create a new branch from'); + const target = await window.showQuickPick(picks, { placeHolder }); - if (!name) { + if (!target) { return; } - await repository.branch(name, true, ref); - } - - @command('git.branchFrom', { repository: true }) - async createBranchFrom(repository: Repository): Promise { - const refs = repositoryRefsToItems(repository); - const placeHolder = localize('select a ref to create a new branch from', 'Select a ref to create a new branch from'); - const choice = await window.showQuickPick(refs, { placeHolder }); + const name = await getBranchNameFromUser(); - if (!choice) { + if (!name) { return; } - await this.branch(repository, choice.label); + await repository.branch(name, true, target.label); } @command('git.deleteBranch', { repository: true }) @@ -2010,7 +2014,7 @@ export class CommandCenter { return Promise.resolve(); } - return Promise.resolve(method.apply(this, [repository, ...args.slice(1)])); + return Promise.resolve(method.apply(this, [repository, ...args])); }); } -- GitLab