Skip to content

Commit e9ae725

Browse files
authored
Git - ensure repository state is up to date when committing changes (microsoft#2878)
1 parent b7eda21 commit e9ae725

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

src/extension/chatSessions/vscode-node/chatSessionWorktreeServiceImpl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ export class ChatSessionWorktreeService extends Disposable implements IChatSessi
310310
}
311311

312312
// Commit all changes in the worktree
313-
const repository = this.gitCommitMessageService.getRepository(vscode.Uri.file(worktreePath));
313+
const repository = await this.gitCommitMessageService.getRepository(vscode.Uri.file(worktreePath));
314314
if (!repository) {
315315
this.logService.error(`[ChatSessionWorktreeService][handleRequestCompleted] Unable to find repository for working directory ${worktreePath}`);
316316
throw new Error(`Unable to find repository for working directory ${worktreePath}`);

src/extension/conversation/vscode-node/conversationFeature.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ export class ConversationFeature implements IExtensionContribution {
232232
return;
233233
}
234234

235-
const repository = this.gitCommitMessageService.getRepository(uri);
235+
const repository = await this.gitCommitMessageService.getRepository(uri);
236236
if (!repository) {
237237
return;
238238
}
@@ -246,7 +246,7 @@ export class ConversationFeature implements IExtensionContribution {
246246
}
247247
}),
248248
vscode.commands.registerCommand('github.copilot.git.generateCommitMessage', async (rootUri: vscode.Uri | undefined, _: vscode.SourceControlInputBoxValueProviderContext[], cancellationToken: vscode.CancellationToken | undefined) => {
249-
const repository = this.gitCommitMessageService.getRepository(rootUri);
249+
const repository = await this.gitCommitMessageService.getRepository(rootUri);
250250
if (!repository) {
251251
return;
252252
}

src/extension/prompt/vscode-node/gitCommitMessageServiceImpl.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class GitCommitMessageServiceImpl implements IGitCommitMessageService {
122122
});
123123
}
124124

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

134134
uri = uri ?? window.activeTextEditor?.document.uri;
135-
return uri ? this._gitExtensionApi.getRepository(uri) : null;
135+
if (!uri) {
136+
return null;
137+
}
138+
139+
const repository = this._gitExtensionApi.getRepository(uri);
140+
if (!repository) {
141+
return null;
142+
}
143+
144+
// Refresh repository state
145+
await repository.status();
146+
147+
return repository;
136148
}
137149

138150
private _getAttemptCount(repository: Repository, changes: string[]): number {

src/platform/git/common/gitCommitMessageService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const IGitCommitMessageService = createServiceIdentifier<IGitCommitMessag
1212
export interface IGitCommitMessageService {
1313
readonly _serviceBrand: undefined;
1414
generateCommitMessage(repository: Repository, cancellationToken: CancellationToken | undefined): Promise<string | undefined>;
15-
getRepository(uri: Uri | undefined): Repository | null;
15+
getRepository(uri: Uri | undefined): Promise<Repository | null>;
1616
}
1717

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

28-
getRepository(): Repository | null {
28+
async getRepository(): Promise<Repository | null> {
2929
return null;
3030
}
3131
}

0 commit comments

Comments
 (0)