Skip to content

Commit 14b6c05

Browse files
Copilotalexr00
andauthored
Fix unhandled rejections from "upstream ref ... is not a GitHub repo" (#8730)
* Initial plan * Fix unhandled rejections when upstream ref is not a GitHub repo Agent-Logs-Url: https://github.com/microsoft/vscode-pull-request-github/sessions/0f354983-7de0-48fd-83e4-7af7fe874a8d Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent a0dc614 commit 14b6c05

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/lm/pullRequestContextProvider.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import * as vscode from 'vscode';
77
import { GitApiImpl } from '../api/api1';
88
import { Disposable } from '../common/lifecycle';
9+
import Logger from '../common/logger';
910
import { onceEvent } from '../common/utils';
1011
import { issueMarkdown } from '../github/markdownUtils';
1112
import { PullRequestModel } from '../github/pullRequestModel';
@@ -24,6 +25,8 @@ export namespace PRChatContextItem {
2425
}
2526

2627
export class WorkspaceContextProvider extends Disposable implements vscode.ChatWorkspaceContextProvider {
28+
private static readonly ID = 'WorkspaceContextProvider';
29+
2730
private readonly _onDidChangeWorkspaceChatContext = this._register(new vscode.EventEmitter<void>());
2831
readonly onDidChangeWorkspaceChatContext = this._onDidChangeWorkspaceChatContext.event;
2932

@@ -70,7 +73,15 @@ export class WorkspaceContextProvider extends Disposable implements vscode.ChatW
7073
if (folderManager.gitHubRepositories.length === 0) {
7174
continue;
7275
}
73-
const defaults = await folderManager.getPullRequestDefaults();
76+
let defaults;
77+
try {
78+
defaults = await folderManager.getPullRequestDefaults();
79+
} catch (e) {
80+
// The folder may have no upstream, a detached HEAD, or an upstream that is not a GitHub
81+
// repository. Skip it instead of letting the rejection escape as an unhandled promise.
82+
Logger.debug(`Skipping workspace chat context for folder ${folderManager.repository.rootUri.toString()}: ${e.message ?? e}`, WorkspaceContextProvider.ID);
83+
continue;
84+
}
7485

7586
let value = `Repository name: ${defaults.repo}
7687
Owner: ${defaults.owner}

src/view/treeNodes/categoryNode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ export class CategoryTreeNode extends TreeNode implements vscode.TreeItem {
297297
hasMorePages = response.hasMorePages;
298298
hasUnsearchedRepositories = response.hasUnsearchedRepositories;
299299
} catch (e) {
300-
if (this.isCopilot && (e.response.status === 422) && e.message.includes('the users do not exist')) {
300+
if (this.isCopilot && (e?.response?.status === 422) && e.message?.includes('the users do not exist')) {
301301
// Skip it, it's copilot and the repo doesn't have copilot
302302
} else {
303303
const error = formatError(e);

0 commit comments

Comments
 (0)