message: fix: cache repository data per workspace and gitconfig
  To reduce server load for GHE instances the repository
  data is aggressively cached per workspace and gitconfig.
  Closes
diff: @@ -4,7 +4,7 @@ import {
  Response
  } from '../client';
  -import { GitHub, getClient } from './api';
  +import { GitHub, getClient, GithubRepositoryStruct } from './api';
  import { GithubRepository } from './repository';
  import { GithubUser } from './user';
  @@ -14,6 +14,8 @@ export class GithubClient implements Client {
  public name = 'GitHub Client';
  + private repositories = new Map<string, GithubRepositoryStruct>();
  +
  constructor(protocol: string, hostname: string, token: string, logger: (message: string) => void,
  allowUnsafeSSL = false) {
  this.client = getClient(this.getApiEndpoint(protocol, hostname), token, logger, allowUnsafeSSL);
  @@ -42,7 +44,15 @@ export class GithubClient implements Client {
  public async getRepository(uri: vscode.Uri, rid: string): Promise<Response<GithubRepository>> {
  const [owner, repository] = rid.split('/');
  + const cacheKey = `${uri.toString()}$$${rid}`;
  + const cacheHit = this.repositories.get(cacheKey);
  + if (cacheHit) {
  + return {
  + body: new GithubRepository(uri, this.client, owner, repository, cacheHit)
  + };
  + }
  const response = await this.client.getRepository(owner, repository);
  + this.repositories.set(cacheKey, response.body);
  return {
  body: new GithubRepository(uri, this.client, owner, repository, response.body)
  };
  