Git - add similarity threshold setting (#182492)

This commit is contained in:
Ladislau Szomoru
2023-05-15 12:59:33 +02:00
committed by GitHub
parent 0007f99481
commit b0252732a7
4 changed files with 16 additions and 2 deletions

View File

@@ -2000,7 +2000,7 @@ export class Repository {
}
}
async getStatus(opts?: { limit?: number; ignoreSubmodules?: boolean; untrackedChanges?: 'mixed' | 'separate' | 'hidden'; cancellationToken?: CancellationToken }): Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }> {
async getStatus(opts?: { limit?: number; ignoreSubmodules?: boolean; similarityThreshold?: number; untrackedChanges?: 'mixed' | 'separate' | 'hidden'; cancellationToken?: CancellationToken }): Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }> {
if (opts?.cancellationToken && opts?.cancellationToken.isCancellationRequested) {
throw new CancellationError();
}
@@ -2020,6 +2020,10 @@ export class Repository {
args.push('--ignore-submodules');
}
if (opts?.similarityThreshold) {
args.push(`--find-renames=${opts.similarityThreshold}%`);
}
const child = this.stream(args, { env });
let result = new Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }>((c, e) => {

View File

@@ -2056,9 +2056,10 @@ export class Repository implements Disposable {
const ignoreSubmodules = scopedConfig.get<boolean>('ignoreSubmodules');
const limit = scopedConfig.get<number>('statusLimit', 10000);
const similarityThreshold = scopedConfig.get<number>('similarityThreshold', 50);
const start = new Date().getTime();
const { status, statusLength, didHitLimit } = await this.repository.getStatus({ limit, ignoreSubmodules, untrackedChanges, cancellationToken });
const { status, statusLength, didHitLimit } = await this.repository.getStatus({ limit, ignoreSubmodules, similarityThreshold, untrackedChanges, cancellationToken });
const totalTime = new Date().getTime() - start;
this.isRepositoryHuge = didHitLimit ? { limit } : false;