scm: multiroot refresh

This commit is contained in:
Joao Moreno
2017-08-16 12:51:30 +02:00
parent 3db1cf08d6
commit d7a2be05b6
7 changed files with 66 additions and 6 deletions

View File

@@ -5,7 +5,7 @@
'use strict';
import { Uri, commands, scm, Disposable, window, workspace, QuickPickItem, OutputChannel, Range, WorkspaceEdit, Position, LineChange, SourceControlResourceGroup, SourceControlResourceState, TextDocumentShowOptions, ViewColumn } from 'vscode';
import { Uri, commands, scm, Disposable, window, workspace, QuickPickItem, OutputChannel, Range, WorkspaceEdit, Position, LineChange, SourceControl, SourceControlResourceGroup, SourceControlResourceState, TextDocumentShowOptions, ViewColumn } from 'vscode';
import { Ref, RefType, Git, GitErrorCodes, Branch } from './git';
import { Repository, Resource, Status, CommitOptions, ResourceGroupType } from './repository';
import { Model } from './model';
@@ -145,8 +145,22 @@ export class CommandCenter {
});
}
@command('git.refresh', { repository: true })
async refresh(repository: Repository): Promise<void> {
@command('git.refresh')
async refresh(sourceControl?: SourceControl): Promise<void> {
let repository: Repository | undefined = undefined;
if (sourceControl) {
repository = this.model.getRepositoryFromSourceControl(sourceControl);
}
if (!repository) {
repository = await this.model.pickRepository();
}
if (!repository) {
return;
}
await repository.status();
}

View File

@@ -5,7 +5,7 @@
'use strict';
import { Uri, window, QuickPickItem, Disposable, SourceControlResourceGroup } from 'vscode';
import { Uri, window, QuickPickItem, Disposable, SourceControl, SourceControlResourceGroup } from 'vscode';
import { Repository, State } from './repository';
import { memoize } from './decorators';
import { toDisposable, filterEvent, once } from './util';
@@ -60,7 +60,17 @@ export class Model {
return pick && pick.repository;
}
getRepositoryFromResourceGroup(resourceGroup?: SourceControlResourceGroup): Repository | undefined {
getRepositoryFromSourceControl(sourceControl: SourceControl): Repository | undefined {
for (let [, repository] of this.repositories) {
if (sourceControl === repository.sourceControl) {
return repository;
}
}
return undefined;
}
getRepositoryFromResourceGroup(resourceGroup: SourceControlResourceGroup): Repository | undefined {
for (let [, repository] of this.repositories) {
if (resourceGroup === repository.mergeGroup || resourceGroup === repository.indexGroup || resourceGroup === repository.workingTreeGroup) {
return repository;