diff --git a/extensions/git/package.json b/extensions/git/package.json index ecb551df3e9..65d4faf08a1 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -828,6 +828,11 @@ "default": null, "isExecutable": true }, + "git.autoRepositoryDetection": { + "type": "boolean", + "description": "%config.autoRepositoryDetection%", + "default": true + }, "git.autorefresh": { "type": "boolean", "description": "%config.autorefresh%", diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json index c72fc11253d..990c6c8c3ab 100644 --- a/extensions/git/package.nls.json +++ b/extensions/git/package.nls.json @@ -49,6 +49,7 @@ "command.stashPopLatest": "Pop Latest Stash", "config.enabled": "Whether git is enabled", "config.path": "Path to the git executable", + "config.autoRepositoryDetection": "Whether a repository should be automatically detected for a single file", "config.autorefresh": "Whether auto refreshing is enabled", "config.autofetch": "Whether auto fetching is enabled", "config.enableLongCommitWarning": "Whether long commit messages should be warned about", diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 098ee2bd954..909b6ef570b 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -904,9 +904,18 @@ export class Repository implements Disposable { const index: Resource[] = []; const workingTree: Resource[] = []; const merge: Resource[] = []; + const repoDetection = config.get('autoRepositoryDetection') === true; status.forEach(raw => { - const uri = Uri.file(path.join(this.repository.root, raw.path)); + const fullFilePath = path.join(this.repository.root, raw.path); + + if (!repoDetection && workspace.workspaceFolders === undefined) { + if (!this.detectActiveFile(fullFilePath)) { + return; + } + } + + const uri = Uri.file(fullFilePath); const renameUri = raw.rename ? Uri.file(path.join(this.repository.root, raw.rename)) : undefined; switch (raw.x + raw.y) { @@ -964,6 +973,10 @@ export class Repository implements Disposable { this._onDidChangeStatus.fire(); } + private detectActiveFile(fullFilePath: string): boolean | undefined { + return window.activeTextEditor && window.activeTextEditor.document.fileName === fullFilePath; + } + private onFSChange(uri: Uri): void { const config = workspace.getConfiguration('git'); const autorefresh = config.get('autorefresh');