diff --git a/src/gitService.ts b/src/gitService.ts index 921bac3..fbf9fc0 100644 --- a/src/gitService.ts +++ b/src/gitService.ts @@ -1424,7 +1424,6 @@ export class GitService extends Disposable { if (options.ref === GitService.deletedSha) return false; let ref = options.ref; - let cacheKey: string; let fileName: string; if (typeof fileNameOrUri === 'string') { @@ -1444,19 +1443,32 @@ export class GitService extends Disposable { cacheKey += `:${ref}`; } - Logger.log(`isTracked('${fileName}', '${repoPath}', '${ref}')`); + Logger.log(`isTracked('${fileName}', '${repoPath}'${ref !== undefined ? `, '${ref}'` : ''})`); let tracked = this._trackedCache.get(cacheKey); - if (tracked !== undefined) return await tracked; + try { + if (tracked !== undefined) { + tracked = await tracked; - tracked = this.isTrackedCore(fileName, repoPath === undefined ? '' : repoPath, ref); - if (options.skipCacheUpdate) return tracked; + return tracked; + } - this._trackedCache.set(cacheKey, tracked); - tracked = await tracked; - this._trackedCache.set(cacheKey, tracked); + tracked = this.isTrackedCore(fileName, repoPath === undefined ? '' : repoPath, ref); + if (options.skipCacheUpdate) { + tracked = await tracked; + + return tracked; + } - return tracked; + this._trackedCache.set(cacheKey, tracked); + tracked = await tracked; + this._trackedCache.set(cacheKey, tracked); + + return tracked; + } + finally { + Logger.log(`isTracked('${fileName}', '${repoPath}'${ref !== undefined ? `, '${ref}'` : ''}) = ${tracked}`); + } } private async isTrackedCore(fileName: string, repoPath: string, ref?: string) {