Skip to content

Commit 82778bd

Browse files
authored
Fix incorrect checks for descendants (#5964)
Fixes #5789
1 parent b41a90f commit 82778bd

File tree

5 files changed

+13
-10
lines changed

5 files changed

+13
-10
lines changed

src/github/pullRequestModel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { Remote } from '../common/remote';
1818
import { ITelemetry } from '../common/telemetry';
1919
import { ReviewEvent as CommonReviewEvent, EventType, TimelineEvent } from '../common/timelineEvent';
2020
import { resolvePath, Schemes, toPRUri, toReviewUri } from '../common/uri';
21-
import { formatError } from '../common/utils';
21+
import { formatError, isDescendant } from '../common/utils';
2222
import { InMemFileChangeModel, RemoteFileChangeModel } from '../view/fileChangeModel';
2323
import { OctokitCommon } from './common';
2424
import { ConflictResolutionModel } from './conflictResolutionModel';
@@ -1933,7 +1933,7 @@ export class PullRequestModel extends IssueModel<PullRequest> implements IPullRe
19331933

19341934
const allFilenames = filePathOrSubpaths
19351935
.map((f) =>
1936-
f.startsWith(this.githubRepository.rootUri.path)
1936+
isDescendant(this.githubRepository.rootUri.path, f)
19371937
? f.substring(this.githubRepository.rootUri.path.length + 1)
19381938
: f
19391939
);

src/github/repositoriesManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { commands, contexts } from '../common/executeCommands';
1010
import Logger from '../common/logger';
1111
import { ITelemetry } from '../common/telemetry';
1212
import { EventType } from '../common/timelineEvent';
13-
import { compareIgnoreCase, dispose } from '../common/utils';
13+
import { compareIgnoreCase, dispose, isDescendant } from '../common/utils';
1414
import { CredentialStore } from './credentials';
1515
import { FolderRepositoryManager, ReposManagerState, ReposManagerStateContext } from './folderRepositoryManager';
1616
import { IssueModel } from './issueModel';
@@ -86,7 +86,7 @@ export class RepositoriesManager implements vscode.Disposable {
8686
const workspaceFolders = vscode.workspace.workspaceFolders;
8787
if (workspaceFolders) {
8888
const index = workspaceFolders.findIndex(
89-
folder => folder.uri.toString() === folderManager.repository.rootUri.toString(),
89+
folder => isDescendant(folder.uri.fsPath, folderManager.repository.rootUri.fsPath) || isDescendant(folderManager.repository.rootUri.fsPath, folder.uri.fsPath),
9090
);
9191
if (index > -1) {
9292
const arrayEnd = this._folderManagers.slice(index, this._folderManagers.length);

src/issues/userCompletionProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Logger from '../common/logger';
99
import { IGNORE_USER_COMPLETION_TRIGGER, ISSUES_SETTINGS_NAMESPACE } from '../common/settingKeys';
1010
import { TimelineEvent } from '../common/timelineEvent';
1111
import { fromPRUri, Schemes } from '../common/uri';
12-
import { compareIgnoreCase } from '../common/utils';
12+
import { compareIgnoreCase, isDescendant } from '../common/utils';
1313
import { EXTENSION_ID } from '../constants';
1414
import { FolderRepositoryManager } from '../github/folderRepositoryManager';
1515
import { IAccount, User } from '../github/interface';
@@ -128,7 +128,7 @@ export class UserCompletionProvider implements vscode.CompletionItemProvider {
128128

129129
private isCodeownersFiles(uri: vscode.Uri): boolean {
130130
const repositoryManager = this.manager.getManagerForFile(uri);
131-
if (!repositoryManager || !uri.path.startsWith(repositoryManager.repository.rootUri.path)) {
131+
if (!repositoryManager || !isDescendant(repositoryManager.repository.rootUri.fsPath, uri.fsPath)) {
132132
return false;
133133
}
134134
const subpath = uri.path.substring(repositoryManager.repository.rootUri.path.length).toLowerCase();

src/view/prChangesTreeDataProvider.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { GitApiImpl } from '../api/api1';
88
import { commands, contexts } from '../common/executeCommands';
99
import Logger, { PR_TREE } from '../common/logger';
1010
import { FILE_LIST_LAYOUT, GIT, OPEN_DIFF_ON_CLICK, PR_SETTINGS_NAMESPACE } from '../common/settingKeys';
11+
import { isDescendant } from '../common/utils';
1112
import { FolderRepositoryManager } from '../github/folderRepositoryManager';
1213
import { PullRequestModel } from '../github/pullRequestModel';
1314
import { RepositoriesManager } from '../github/repositoriesManager';
@@ -166,9 +167,10 @@ export class PullRequestChangesTreeDataProvider extends vscode.Disposable implem
166167
private sortMap() {
167168
const workspaceFolders = vscode.workspace.workspaceFolders;
168169
const compareFolders = (a: vscode.Uri, b: vscode.Uri) => {
169-
const aFolder = a.toString().toLowerCase();
170-
const bFolder = b.toString().toLowerCase();
171-
return aFolder.includes(bFolder) || bFolder.includes(aFolder);
170+
const aFolder = a.fsPath.toLowerCase();
171+
const bFolder = b.fsPath.toLowerCase();
172+
173+
return isDescendant(aFolder, bFolder) || isDescendant(bFolder, aFolder);
172174
};
173175

174176
return Array.from(this._pullRequestManagerMap.entries()).sort((a, b) => {

src/view/reviewsManager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Repository } from '../api/api';
88
import { GitApiImpl } from '../api/api1';
99
import { ITelemetry } from '../common/telemetry';
1010
import { Schemes } from '../common/uri';
11+
import { isDescendant } from '../common/utils';
1112
import { CredentialStore } from '../github/credentials';
1213
import { RepositoriesManager } from '../github/repositoriesManager';
1314
import { GitContentFileSystemProvider } from './gitContentProvider';
@@ -65,7 +66,7 @@ export class ReviewsManager {
6566

6667
async provideTextDocumentContent(uri: vscode.Uri): Promise<string | undefined> {
6768
for (const reviewManager of this._reviewManagers) {
68-
if (uri.fsPath.startsWith(reviewManager.repository.rootUri.fsPath)) {
69+
if (isDescendant(reviewManager.repository.rootUri.fsPath, uri.fsPath)) {
6970
return reviewManager.provideTextDocumentContent(uri);
7071
}
7172
}

0 commit comments

Comments
 (0)