Define new setting: "git.statusArgs.untrackedFiles"

This commit is contained in:
Andrew Hyndman 2021-11-08 12:24:51 -08:00
parent 472b3e5447
commit 9685bc7634
3 changed files with 24 additions and 2 deletions

View file

@ -2163,6 +2163,22 @@
"description": "%config.showUnpublishedCommitsButton%",
"scope": "resource"
},
"git.statusArgs.untrackedFiles": {
"type": "string",
"enum": [
"all",
"no",
"normal"
],
"enumDescriptions": [
"%config.git.statusArgs.untrackedFiles.all%",
"%config.git.statusArgs.untrackedFiles.no%",
"%config.git.statusArgs.untrackedFiles.normal%"
],
"default": "all",
"description": "%git.statusArgs.untrackedFiles%",
"scope": "window"
},
"git.statusLimit": {
"type": "number",
"scope": "resource",

View file

@ -189,6 +189,10 @@
"config.showUnpublishedCommitsButton.always": "Always shows the action button, if there are unpublished commits.",
"config.showUnpublishedCommitsButton.whenEmpty": "Only shows the action button if there are no other changes and there are unpublished commits.",
"config.showUnpublishedCommitsButton.never": "Never shows the action button.",
"config.git.statusArgs.untrackedFiles": "Configures the untracked changes argument passed to 'git status' by VS Code.",
"config.git.statusArgs.untrackedFiles.all": "Also shows individual files in untracked directories.",
"config.git.statusArgs.untrackedFiles.no": "Show no untracked files.",
"config.git.statusArgs.untrackedFiles.normal": "Shows untracked files and directories.",
"config.statusLimit": "Controls how to limit the number of changes that can be parsed from Git status command. Can be set to 0 for no limit.",
"submenu.explorer": "Git",
"submenu.commit": "Commit",

View file

@ -12,7 +12,7 @@ import { EventEmitter } from 'events';
import * as iconv from 'iconv-lite-umd';
import * as filetype from 'file-type';
import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter, Versions } from './util';
import { CancellationToken, Progress, Uri } from 'vscode';
import { workspace, CancellationToken, Progress, Uri } from 'vscode';
import { detectEncoding } from './encoding';
import { Ref, RefType, Branch, Remote, ForcePushMode, GitErrorCodes, LogOptions, Change, Status, CommitOptions, BranchQuery } from './api/git';
import * as byline from 'byline';
@ -1811,10 +1811,12 @@ export class Repository {
}
getStatus(opts?: { limit?: number, ignoreSubmodules?: boolean }): Promise<{ status: IFileStatus[]; didHitLimit: boolean; }> {
const untrackedChangesArg = workspace.getConfiguration('git').get<string>('statusArgs.untrackedFiles', 'all');
return new Promise<{ status: IFileStatus[]; didHitLimit: boolean; }>((c, e) => {
const parser = new GitStatusParser();
const env = { GIT_OPTIONAL_LOCKS: '0' };
const args = ['status', '-z', '-u'];
const args = ['status', '-z', `--untracked-files=${untrackedChangesArg}`];
if (opts?.ignoreSubmodules) {
args.push('--ignore-submodules');