more submodule support, diff colorization

This commit is contained in:
Joao Moreno
2017-12-13 16:21:12 +01:00
parent 0cd53b2d9b
commit 9f131c1762
10 changed files with 455 additions and 61 deletions

View File

@@ -265,19 +265,19 @@ export class Model {
getRepository(sourceControl: SourceControl): Repository | undefined;
getRepository(resourceGroup: SourceControlResourceGroup): Repository | undefined;
getRepository(path: string): Repository | undefined;
getRepository(resource: Uri): Repository | undefined;
getRepository(hint: any): Repository | undefined {
const liveRepository = this.getOpenRepository(hint);
getRepository(path: string, possibleSubmoduleRoot?: boolean): Repository | undefined;
getRepository(resource: Uri, possibleSubmoduleRoot?: boolean): Repository | undefined;
getRepository(hint: any, possibleSubmoduleRoot?: boolean): Repository | undefined {
const liveRepository = this.getOpenRepository(hint, possibleSubmoduleRoot);
return liveRepository && liveRepository.repository;
}
private getOpenRepository(repository: Repository): OpenRepository | undefined;
private getOpenRepository(sourceControl: SourceControl): OpenRepository | undefined;
private getOpenRepository(resourceGroup: SourceControlResourceGroup): OpenRepository | undefined;
private getOpenRepository(path: string): OpenRepository | undefined;
private getOpenRepository(resource: Uri): OpenRepository | undefined;
private getOpenRepository(hint: any): OpenRepository | undefined {
private getOpenRepository(path: string, possibleSubmoduleRoot?: boolean): OpenRepository | undefined;
private getOpenRepository(resource: Uri, possibleSubmoduleRoot?: boolean): OpenRepository | undefined;
private getOpenRepository(hint: any, possibleSubmoduleRoot?: boolean): OpenRepository | undefined {
if (!hint) {
return undefined;
}
@@ -295,15 +295,21 @@ export class Model {
outer:
for (const liveRepository of this.openRepositories.sort((a, b) => b.repository.root.length - a.repository.root.length)) {
if (possibleSubmoduleRoot && liveRepository.repository.root === resourcePath) {
continue;
}
if (!isDescendant(liveRepository.repository.root, resourcePath)) {
continue;
}
for (const submodule of liveRepository.repository.submodules) {
const submoduleRoot = path.join(liveRepository.repository.root, submodule.path);
if (!possibleSubmoduleRoot) {
for (const submodule of liveRepository.repository.submodules) {
const submoduleRoot = path.join(liveRepository.repository.root, submodule.path);
if (isDescendant(submoduleRoot, resourcePath)) {
continue outer;
if (isDescendant(submoduleRoot, resourcePath)) {
continue outer;
}
}
}