Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ export class ChatSessionWorktreeService extends Disposable implements IChatSessi
}

// Commit all changes in the worktree
const repository = this.gitCommitMessageService.getRepository(vscode.Uri.file(worktreePath));
const repository = await this.gitCommitMessageService.getRepository(vscode.Uri.file(worktreePath));
if (!repository) {
this.logService.error(`[ChatSessionWorktreeService][handleRequestCompleted] Unable to find repository for working directory ${worktreePath}`);
throw new Error(`Unable to find repository for working directory ${worktreePath}`);
Expand Down
4 changes: 2 additions & 2 deletions src/extension/conversation/vscode-node/conversationFeature.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ export class ConversationFeature implements IExtensionContribution {
return;
}

const repository = this.gitCommitMessageService.getRepository(uri);
const repository = await this.gitCommitMessageService.getRepository(uri);
if (!repository) {
return;
}
Expand All @@ -246,7 +246,7 @@ export class ConversationFeature implements IExtensionContribution {
}
}),
vscode.commands.registerCommand('github.copilot.git.generateCommitMessage', async (rootUri: vscode.Uri | undefined, _: vscode.SourceControlInputBoxValueProviderContext[], cancellationToken: vscode.CancellationToken | undefined) => {
const repository = this.gitCommitMessageService.getRepository(rootUri);
const repository = await this.gitCommitMessageService.getRepository(rootUri);
if (!repository) {
return;
}
Expand Down
16 changes: 14 additions & 2 deletions src/extension/prompt/vscode-node/gitCommitMessageServiceImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export class GitCommitMessageServiceImpl implements IGitCommitMessageService {
});
}

getRepository(uri?: Uri): Repository | null {
async getRepository(uri?: Uri): Promise<Repository | null> {
if (!this._gitExtensionApi) {
return null;
}
Expand All @@ -132,7 +132,19 @@ export class GitCommitMessageServiceImpl implements IGitCommitMessageService {
}

uri = uri ?? window.activeTextEditor?.document.uri;
return uri ? this._gitExtensionApi.getRepository(uri) : null;
if (!uri) {
return null;
}

const repository = this._gitExtensionApi.getRepository(uri);
if (!repository) {
return null;
}

// Refresh repository state
await repository.status();

return repository;
}

private _getAttemptCount(repository: Repository, changes: string[]): number {
Expand Down
4 changes: 2 additions & 2 deletions src/platform/git/common/gitCommitMessageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const IGitCommitMessageService = createServiceIdentifier<IGitCommitMessag
export interface IGitCommitMessageService {
readonly _serviceBrand: undefined;
generateCommitMessage(repository: Repository, cancellationToken: CancellationToken | undefined): Promise<string | undefined>;
getRepository(uri: Uri | undefined): Repository | null;
getRepository(uri: Uri | undefined): Promise<Repository | null>;
}

/**
Expand All @@ -25,7 +25,7 @@ export class NoopGitCommitMessageService implements IGitCommitMessageService {
return Promise.resolve('Test commit message');
}

getRepository(): Repository | null {
async getRepository(): Promise<Repository | null> {
return null;
}
}
Loading