diff options
-rw-r--r-- | Documentation/config.txt | 19 | ||||
-rw-r--r-- | Documentation/git-commit.txt | 4 | ||||
-rwxr-xr-x | t/t7502-status.sh | 18 | ||||
-rw-r--r-- | wt-status.c | 13 |
4 files changed, 54 insertions, 0 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 5331b450ea..1e09a57c8c 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 a6f41f3663..2e5ea22a40 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 d84bda1dda..38a48b57c7 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 <<EOF # On branch master # Changes to be committed: @@ -117,6 +123,12 @@ test_expect_success 'status -unormal' ' test_cmp expect output ' +test_expect_success 'status (status.showUntrackedFiles normal)' ' + git config status.showuntrackedfiles normal + git status >output && + test_cmp expect output +' + cat >expect <<EOF # On branch master # Changes to be committed: @@ -143,7 +155,13 @@ cat >expect <<EOF EOF test_expect_success 'status -uall' ' git status -uall >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 23017e4d46..28c9e637e3 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); } |