git: scoped git repositories

fixes #20227
This commit is contained in:
Joao Moreno
2017-02-16 16:01:16 +01:00
parent ee529b21b2
commit 6d69f69c71
3 changed files with 29 additions and 21 deletions

View File

@@ -6,8 +6,7 @@
'use strict';
import { workspace, Uri, Disposable, Event, EventEmitter } from 'vscode';
import * as path from 'path';
import { Git } from './git';
import { Model } from './model';
export class GitContentProvider {
@@ -18,7 +17,7 @@ export class GitContentProvider {
private uris = new Set<Uri>();
constructor(private git: Git, private rootPath: string, onGitChange: Event<Uri>) {
constructor(private model: Model, onGitChange: Event<Uri>) {
this.disposables.push(
onGitChange(this.fireChangeEvents, this),
workspace.registerTextDocumentContentProvider('git', this)
@@ -32,19 +31,10 @@ export class GitContentProvider {
}
async provideTextDocumentContent(uri: Uri): Promise<string> {
const treeish = uri.query;
const relativePath = path.relative(this.rootPath, uri.fsPath).replace(/\\/g, '/');
try {
const result = await this.git.exec(this.rootPath, ['show', `${treeish}:${relativePath}`]);
if (result.exitCode !== 0) {
this.uris.delete(uri);
return '';
}
const result = await this.model.show(uri.query, uri);
this.uris.add(uri);
return result.stdout;
return result;
} catch (err) {
this.uris.delete(uri);
return '';