From 8ab7abed918ebaf9212f97cccf61b294b7caefb6 Mon Sep 17 00:00:00 2001 From: Joao Date: Wed, 30 Aug 2017 16:31:16 +0200 Subject: [PATCH] fixes #33521 --- extensions/git/src/model.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts index a49692e2283..df0ef20f864 100644 --- a/extensions/git/src/model.ts +++ b/extensions/git/src/model.ts @@ -11,6 +11,7 @@ import { memoize, sequentialize, debounce } from './decorators'; import { dispose, anyEvent, filterEvent } from './util'; import { Git, GitErrorCodes } from './git'; import * as path from 'path'; +import * as fs from 'fs'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); @@ -62,6 +63,23 @@ export class Model { const onGitRepositoryChange = filterEvent(onWorkspaceChange, uri => /\/\.git\//.test(uri.path)); const onPossibleGitRepositoryChange = filterEvent(onGitRepositoryChange, uri => !this.getRepository(uri)); onPossibleGitRepositoryChange(this.onPossibleGitRepositoryChange, this, this.disposables); + + this.scanWorkspaceFolders(); + } + + /** + * Scans the first level of each workspace folder, looking + * for git repositories. + */ + private async scanWorkspaceFolders(): Promise { + for (const folder of workspace.workspaceFolders || []) { + const root = folder.uri.fsPath; + const children = await new Promise((c, e) => fs.readdir(root, (err, r) => err ? e(err) : c(r))); + + for (const child of children) { + this.tryOpenRepository(path.join(root, child)); + } + } } private onPossibleGitRepositoryChange(uri: Uri): void { -- GitLab