From d6293d1f2cadcdf45f8ada7847a32b51fa5bf0a6 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Thu, 5 Jun 2008 14:47:50 +0200 Subject: [PATCH] Add configuration option for default untracked files mode By default, the untracked files mode for commit/status is 'normal' Signed-off-by: Marius Storm-Olsen --- Documentation/config.txt | 19 +++++++++++++++++++ Documentation/git-commit.txt | 4 ++++ t/t7502-status.sh | 18 ++++++++++++++++++ wt-status.c | 13 +++++++++++++ 4 files changed, 54 insertions(+) diff --git a/Documentation/config.txt b/Documentation/config.txt index 5331b450e..1e09a57c8 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1013,6 +1013,25 @@ status.relativePaths:: relative to the repository root (this was the default for git prior to v1.5.4). +status.showUntrackedFiles:: + By default, linkgit:git-status[1] and linkgit:git-commit[1] show + files which are not currently tracked by Git. Directories which + contain only untracked files, are shown with the directory name + only. Showing untracked files means that Git needs to lstat() all + all the files in the whole repository, which might be slow on some + systems. So, this variable controls how the commands displays + the untracked files. Possible values are: ++ +-- + - 'no' - Show no untracked files + - 'normal' - Shows untracked files and directories + - 'all' - Shows also individual files in untracked directories. +-- ++ +If this variable is not specified, it defaults to 'normal'. +This variable can be overridden with the -u|--untracked-files option +of linkgit:git-status[1] and linkgit:git-commit[1]. + tar.umask:: This variable can be used to restrict the permission bits of tar archive entries. The default is 0002, which turns off the diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index a6f41f366..2e5ea22a4 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -161,6 +161,10 @@ the handling of untracked files. The possible options are: - 'normal' - Shows untracked files and directories - 'all' - Also shows individual files in untracked directories. -- ++ +See linkgit:git-config[1] for configuration variable +used to change the default for when the option is not +specified. -v|--verbose:: Show unified diff between the HEAD commit and what diff --git a/t/t7502-status.sh b/t/t7502-status.sh index d84bda1dd..38a48b57c 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -89,6 +89,12 @@ test_expect_success 'status -uno' ' test_cmp expect output ' +test_expect_success 'status (status.showUntrackedFiles no)' ' + git config status.showuntrackedfiles no + git status >output && + test_cmp expect output +' + cat >expect <output && + test_cmp expect output +' + cat >expect <expect <output && + test_cmp expect output +' +test_expect_success 'status (status.showUntrackedFiles all)' ' + git config status.showuntrackedfiles all + git status >output && rm -rf dir3 && + git config --unset status.showuntrackedfiles && test_cmp expect output ' diff --git a/wt-status.c b/wt-status.c index 23017e4d4..28c9e637e 100644 --- a/wt-status.c +++ b/wt-status.c @@ -397,5 +397,18 @@ int git_status_config(const char *k, const char *v, void *cb) wt_status_relative_paths = git_config_bool(k, v); return 0; } + if (!strcmp(k, "status.showuntrackedfiles")) { + if (!v) + return config_error_nonbool(v); + else if (!strcmp(v, "no")) + show_untracked_files = SHOW_NO_UNTRACKED_FILES; + else if (!strcmp(v, "normal")) + show_untracked_files = SHOW_NORMAL_UNTRACKED_FILES; + else if (!strcmp(v, "all")) + show_untracked_files = SHOW_ALL_UNTRACKED_FILES; + else + return error("Invalid untracked files mode '%s'", v); + return 0; + } return git_color_default_config(k, v, cb); } -- 2.30.2