This commit is contained in:
Sunitha Patel 2021-11-26 13:55:49 +00:00 committed by GitHub
commit 221d7ebafa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -63,6 +63,7 @@ export class Model implements IRemoteSourcePublisherRegistry, IPushErrorHandlerR
readonly onDidChangeOriginalResource: Event<OriginalResourceChangeEvent> = this._onDidChangeOriginalResource.event;
private openRepositories: OpenRepository[] = [];
private closedRepositories = new Set<string>();
get repositories(): Repository[] { return this.openRepositories.map(r => r.repository); }
private possibleGitRepositoryPaths = new Set<string>();
@ -208,6 +209,7 @@ export class Model implements IRemoteSourcePublisherRegistry, IPushErrorHandlerR
.filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
openRepositoriesToDispose.forEach(r => r.dispose());
this.closedRepositories.clear();
await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
}
@ -308,6 +310,10 @@ export class Model implements IRemoteSourcePublisherRegistry, IPushErrorHandlerR
}
private shouldRepositoryBeIgnored(repositoryRoot: string): boolean {
if (this.closedRepositories.has(repositoryRoot.toLowerCase())) {
return true;
}
const config = workspace.getConfiguration('git');
const ignoredRepos = config.get<string[]>('ignoredRepositories') || [];
@ -388,6 +394,10 @@ export class Model implements IRemoteSourcePublisherRegistry, IPushErrorHandlerR
this.outputChannel.appendLine(`Close repository: ${repository.root}`);
openRepository.dispose();
if (!this.closedRepositories.has(repository.root)) {
this.closedRepositories.add(repository.root.toLowerCase());
}
}
async pickRepository(): Promise<Repository | undefined> {
@ -528,6 +538,7 @@ export class Model implements IRemoteSourcePublisherRegistry, IPushErrorHandlerR
openRepositories.forEach(r => r.dispose());
this.openRepositories = [];
this.closedRepositories.clear();
this.possibleGitRepositoryPaths.clear();
this.disposables = dispose(this.disposables);
}