Skip to content

Commit 29f9e51

Browse files
lszomoruthekorn
andcommitted
if 'git.untrackedChanges' is set to 'hidden' ignore untracked files when running 'git status'
Co-authored-by: Markus Korn <[email protected]>
1 parent 22734c7 commit 29f9e51

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

extensions/git/src/git.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1849,11 +1849,17 @@ export class Repository {
18491849
}
18501850
}
18511851

1852-
getStatus(opts?: { limit?: number; ignoreSubmodules?: boolean }): Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }> {
1852+
getStatus(opts?: { limit?: number; ignoreSubmodules?: boolean; untrackedChanges?: 'mixed' | 'separate' | 'hidden' }): Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }> {
18531853
return new Promise<{ status: IFileStatus[]; statusLength: number; didHitLimit: boolean }>((c, e) => {
18541854
const parser = new GitStatusParser();
18551855
const env = { GIT_OPTIONAL_LOCKS: '0' };
1856-
const args = ['status', '-z', '-u'];
1856+
const args = ['status', '-z'];
1857+
1858+
if (opts?.untrackedChanges === 'hidden') {
1859+
args.push('-uno');
1860+
} else {
1861+
args.push('-uall');
1862+
}
18571863

18581864
if (opts?.ignoreSubmodules) {
18591865
args.push('--ignore-submodules');

extensions/git/src/repository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1857,11 +1857,12 @@ export class Repository implements Disposable {
18571857
@throttle
18581858
private async updateModelState(): Promise<void> {
18591859
const scopedConfig = workspace.getConfiguration('git', Uri.file(this.repository.root));
1860+
const untrackedChanges = scopedConfig.get<'mixed' | 'separate' | 'hidden'>('untrackedChanges');
18601861
const ignoreSubmodules = scopedConfig.get<boolean>('ignoreSubmodules');
18611862

18621863
const limit = scopedConfig.get<number>('statusLimit', 10000);
18631864

1864-
const { status, statusLength, didHitLimit } = await this.repository.getStatus({ limit, ignoreSubmodules });
1865+
const { status, statusLength, didHitLimit } = await this.repository.getStatus({ limit, ignoreSubmodules, untrackedChanges });
18651866

18661867
if (didHitLimit) {
18671868
/* __GDPR__
@@ -1943,7 +1944,6 @@ export class Repository implements Disposable {
19431944
this._submodules = submodules!;
19441945
this.rebaseCommit = rebaseCommit;
19451946

1946-
const untrackedChanges = scopedConfig.get<'mixed' | 'separate' | 'hidden'>('untrackedChanges');
19471947
const index: Resource[] = [];
19481948
const workingTree: Resource[] = [];
19491949
const merge: Resource[] = [];

0 commit comments

Comments
 (0)