diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 1ca402bf14f..ac1f80cae0e 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -10,7 +10,7 @@ import { Ref, RefType, Git, GitErrorCodes, Branch } from './git'; import { Repository, Resource, Status, CommitOptions, ResourceGroupType } from './repository'; import { Model } from './model'; import { toGitUri, fromGitUri } from './uri'; -import { grep, isDescendant } from './util'; +import { grep, isDescendant, pathEquals } from './util'; import { applyLineChanges, intersectDiffWithRange, toLineRanges, invertLineChange, getModifiedRange } from './staging'; import * as path from 'path'; import { lstat, Stats } from 'fs'; @@ -1737,7 +1737,7 @@ export class CommandCenter { } // Could it be a submodule? - if (resource.fsPath === repository.root) { + if (pathEquals(resource.fsPath, repository.root)) { repository = this.model.getRepositoryForSubmodule(resource) || repository; } diff --git a/extensions/git/src/contentProvider.ts b/extensions/git/src/contentProvider.ts index 67b36b3feca..443dd774f2a 100644 --- a/extensions/git/src/contentProvider.ts +++ b/extensions/git/src/contentProvider.ts @@ -9,7 +9,7 @@ import { workspace, Uri, Disposable, Event, EventEmitter, window } from 'vscode' import { debounce, throttle } from './decorators'; import { fromGitUri, toGitUri } from './uri'; import { Model, ModelChangeEvent, OriginalResourceChangeEvent } from './model'; -import { filterEvent, eventToPromise, isDescendant } from './util'; +import { filterEvent, eventToPromise, isDescendant, pathEquals } from './util'; interface CacheRow { uri: Uri; @@ -130,7 +130,7 @@ export class GitContentProvider { const { path } = fromGitUri(row.uri); const isOpen = workspace.textDocuments .filter(d => d.uri.scheme === 'file') - .some(d => d.uri.fsPath === path); + .some(d => pathEquals(d.uri.fsPath, path)); if (isOpen || now - row.timestamp < THREE_MINUTES) { cache[row.uri.toString()] = row; diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts index ec3f7887e98..c65b56a3686 100644 --- a/extensions/git/src/util.ts +++ b/extensions/git/src/util.ts @@ -324,3 +324,13 @@ export function isDescendant(parent: string, descendant: string): boolean { return descendant.startsWith(parent); } + +export function pathEquals(a: string, b: string): boolean { + // Windows is case insensitive + if (isWindowsPath(a)) { + a = a.toLowerCase(); + b = b.toLowerCase(); + } + + return a === b; +} \ No newline at end of file