From abeba5d17674eb81b36592c6c6cf8a678ce81c9c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 27 Nov 2015 15:06:44 +0100 Subject: [PATCH] fix git services onEditorInputChanged --- .../git/browser/views/changes/changesView.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/git/browser/views/changes/changesView.ts b/src/vs/workbench/parts/git/browser/views/changes/changesView.ts index f454db50a1b..85ab5b36bc1 100644 --- a/src/vs/workbench/parts/git/browser/views/changes/changesView.ts +++ b/src/vs/workbench/parts/git/browser/views/changes/changesView.ts @@ -12,6 +12,7 @@ import Lifecycle = require('vs/base/common/lifecycle'); import EventEmitter = require('vs/base/common/eventEmitter'); import Strings = require('vs/base/common/strings'); import Errors = require('vs/base/common/errors'); +import * as paths from 'vs/base/common/paths'; import WinJS = require('vs/base/common/winjs.base'); import Builder = require('vs/base/browser/builder'); import Keyboard = require('vs/base/browser/keyboardEvent'); @@ -404,19 +405,27 @@ export class ChangesView extends EventEmitter.EventEmitter implements GitView.IV } if (input instanceof Files.FileEditorInput) { - var fileInput = input; + const fileInput = input; + const resource = fileInput.getResource(); - var workspaceRelativePath = this.contextService.toWorkspaceRelativePath(fileInput.getResource()); - if (!workspaceRelativePath) { + const workspaceRoot = this.contextService.getWorkspace().resource.fsPath; + if (!paths.isEqualOrParent(resource.fsPath, workspaceRoot)) { return null; // out of workspace not yet supported } - var status = this.gitService.getModel().getStatus().getWorkingTreeStatus().find(workspaceRelativePath); + const repositoryRoot = this.gitService.getModel().getRepositoryRoot(); + if (!paths.isEqualOrParent(resource.fsPath, repositoryRoot)) { + return null; // out of repository not supported + } + + const repositoryRelativePath = paths.normalize(paths.relative(repositoryRoot, resource.fsPath)); + + var status = this.gitService.getModel().getStatus().getWorkingTreeStatus().find(repositoryRelativePath); if (status && (status.getStatus() === git.Status.UNTRACKED || status.getStatus() === git.Status.IGNORED)) { return status; } - status = this.gitService.getModel().getStatus().getMergeStatus().find(workspaceRelativePath); + status = this.gitService.getModel().getStatus().getMergeStatus().find(repositoryRelativePath); if (status) { return status; } -- GitLab