diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index f71e3b723f082e1ebb809c595aea6d7a8b1552c8..fa93cd06bf50634e2cc169d9ee47f15b2b99f7be 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -982,14 +982,25 @@ export class CommandCenter { @command('git.ignore') async ignore(...resourceStates: SourceControlResourceState[]): Promise { - const resources = resourceStates - .filter(s => s instanceof Resource) as Resource[]; + if (resourceStates.length === 0 || !(resourceStates[0].resourceUri instanceof Uri)) { + const uri = window.activeTextEditor && window.activeTextEditor.document.uri; - if (!resources.length) { + if (!uri) { + return; + } + + return await this.model.ignore([uri]); + } + + const uris = resourceStates + .filter(s => s instanceof Resource) + .map(r => r.resourceUri); + + if (!uris.length) { return; } - await this.model.ignore(resources); + await this.model.ignore(uris); } private createCommand(id: string, key: string, method: Function, skipModelCheck: boolean): (...args: any[]) => any { diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts index 3c9496cfd02b4fa9603922a802d61a122e7dbe09..7a93c2a9e52d129599854bf7cd7eb3319a5e868b 100644 --- a/extensions/git/src/model.ts +++ b/extensions/git/src/model.ts @@ -536,11 +536,11 @@ export class Model implements Disposable { return await this.run(Operation.GetCommitTemplate, async () => this.repository.getCommitTemplate()); } - async ignore(files: Resource[]): Promise { + async ignore(files: Uri[]): Promise { return await this.run(Operation.Ignore, async () => { const ignoreFile = `${this.repository.root}${path.sep}.gitignore`; const textToAppend = files - .map(file => path.relative(this.repository.root, file.resourceUri.fsPath).replace(/\\/g, '/')) + .map(uri => path.relative(this.repository.root, uri.fsPath).replace(/\\/g, '/')) .join('\n'); const document = await new Promise(c => fs.exists(ignoreFile, c))