From 41ecdd700c43ddd4c6b7c002bc23f32560fcb062 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Thu, 10 Apr 2025 22:20:04 +0100 Subject: [PATCH] Git - add more logging to `provideOriginalResource()` (#246242) --- extensions/git/src/main.ts | 2 +- extensions/git/src/repository.ts | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts index 8205d8de69f9..e81b4ce508fd 100644 --- a/extensions/git/src/main.ts +++ b/extensions/git/src/main.ts @@ -117,7 +117,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel, new GitBlameController(model), new GitTimelineProvider(model, cc), new GitEditSessionIdentityProvider(model), - new StagedResourceQuickDiffProvider(model), + new StagedResourceQuickDiffProvider(model, logger), new TerminalShellExecutionManager(model, logger) ); diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 4cd30ffa2086..c36cbe30f11b 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -1026,6 +1026,8 @@ export class Repository implements Disposable { } provideOriginalResource(uri: Uri): Uri | undefined { + this.logger.trace(`[Repository][provideOriginalResource] Resource: ${uri.toString()}`); + if (uri.scheme !== 'file') { return; } @@ -1063,7 +1065,10 @@ export class Repository implements Disposable { return undefined; } - return toGitUri(uri, '', { replaceFileExtension: true }); + const originalResource = toGitUri(uri, '', { replaceFileExtension: true }); + this.logger.trace(`[Repository][provideOriginalResource] Original resource: ${originalResource.toString()}`); + + return originalResource; } async getInputTemplate(): Promise { @@ -2802,23 +2807,32 @@ export class StagedResourceQuickDiffProvider implements QuickDiffProvider { private _disposables: IDisposable[] = []; - constructor(private readonly _repositoryResolver: IRepositoryResolver) { + constructor( + private readonly _repositoryResolver: IRepositoryResolver, + private readonly logger: LogOutputChannel + ) { this._disposables.push(window.registerQuickDiffProvider({ scheme: 'file' }, this, l10n.t('Git local changes (working tree + index)'))); } provideOriginalResource(uri: Uri): Uri | undefined { + this.logger.trace(`[StagedResourceQuickDiffProvider][provideOriginalResource] Resource: ${uri.toString()}`); + // Ignore resources outside a repository const repository = this._repositoryResolver.getRepository(uri); if (!repository) { + this.logger.trace(`[StagedResourceQuickDiffProvider][provideOriginalResource] Resource is not part of the repository: ${uri.toString()}`); return undefined; } // Ignore resources that are not in the index group if (!repository.indexGroup.resourceStates.some(r => pathEquals(r.resourceUri.fsPath, uri.fsPath))) { + this.logger.trace(`[StagedResourceQuickDiffProvider][provideOriginalResource] Resource is not part of a index group: ${uri.toString()}`); return undefined; } - return toGitUri(uri, 'HEAD', { replaceFileExtension: true }); + const originalResource = toGitUri(uri, 'HEAD', { replaceFileExtension: true }); + this.logger.trace(`[StagedResourceQuickDiffProvider][provideOriginalResource] Original resource: ${originalResource.toString()}`); + return originalResource; } dispose() {