add status.relativePaths config variable

The output of git-status was recently changed to output relative
paths. Setting this variable to false restores the old behavior for
any old-timers that prefer it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2007-12-07 16:26:07 -05:00 committed by Junio C Hamano
parent c3ce326128
commit 46f721c8fe
6 changed files with 52 additions and 2 deletions

View File

@ -762,6 +762,12 @@ showbranch.default::
The default set of branches for gitlink:git-show-branch[1]. The default set of branches for gitlink:git-show-branch[1].
See gitlink:git-show-branch[1]. See gitlink:git-show-branch[1].
status.relativePaths::
By default, gitlink:git-status[1] shows paths relative to the
current directory. Setting this variable to `false` shows paths
relative to the repository root (this was the default for git
prior to v1.5.4).
tar.umask:: tar.umask::
This variable can be used to restrict the permission bits of This variable can be used to restrict the permission bits of
tar archive entries. The default is 0002, which turns off the tar archive entries. The default is 0002, which turns off the

View File

@ -42,7 +42,8 @@ template comments, and all the output lines are prefixed with '#'.
The paths mentioned in the output, unlike many other git commands, are The paths mentioned in the output, unlike many other git commands, are
made relative to the current directory, if you are working in a made relative to the current directory, if you are working in a
subdirectory (this is on purpose, to help cutting and pasting). subdirectory (this is on purpose, to help cutting and pasting). See
the status.relativePaths config option below.
CONFIGURATION CONFIGURATION
@ -53,6 +54,10 @@ mean the same thing and the latter is kept for backward
compatibility) and `color.status.<slot>` configuration variables compatibility) and `color.status.<slot>` configuration variables
to colorize its output. to colorize its output.
If the config variable `status.relativePaths` is set to false, then all
paths shown are relative to the repository root, not to the current
directory.
See Also See Also
-------- --------
gitlink:gitignore[5] gitlink:gitignore[5]

View File

@ -285,6 +285,7 @@ static int run_status(FILE *fp, const char *index_file, const char *prefix)
struct wt_status s; struct wt_status s;
wt_status_prepare(&s); wt_status_prepare(&s);
if (wt_status_relative_paths)
s.prefix = prefix; s.prefix = prefix;
if (amend) { if (amend) {

View File

@ -88,4 +88,35 @@ test_expect_success 'status with relative paths' '
' '
cat > expect << \EOF
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: dir2/added
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: dir1/modified
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# dir1/untracked
# dir2/modified
# dir2/untracked
# expect
# output
# untracked
EOF
test_expect_success 'status without relative paths' '
git config status.relativePaths false
(cd dir1 && git status) > output &&
git diff expect output
'
test_done test_done

View File

@ -8,6 +8,7 @@
#include "revision.h" #include "revision.h"
#include "diffcore.h" #include "diffcore.h"
int wt_status_relative_paths = 1;
int wt_status_use_color = 0; int wt_status_use_color = 0;
static char wt_status_colors[][COLOR_MAXLEN] = { static char wt_status_colors[][COLOR_MAXLEN] = {
"", /* WT_STATUS_HEADER: normal */ "", /* WT_STATUS_HEADER: normal */
@ -400,6 +401,11 @@ int git_status_config(const char *k, const char *v)
if (!prefixcmp(k, "status.color.") || !prefixcmp(k, "color.status.")) { if (!prefixcmp(k, "status.color.") || !prefixcmp(k, "color.status.")) {
int slot = parse_status_slot(k, 13); int slot = parse_status_slot(k, 13);
color_parse(v, k, wt_status_colors[slot]); color_parse(v, k, wt_status_colors[slot]);
return 0;
}
if (!strcmp(k, "status.relativepaths")) {
wt_status_relative_paths = git_config_bool(k, v);
return 0;
} }
return git_default_config(k, v); return git_default_config(k, v);
} }

View File

@ -28,6 +28,7 @@ struct wt_status {
int git_status_config(const char *var, const char *value); int git_status_config(const char *var, const char *value);
int wt_status_use_color; int wt_status_use_color;
int wt_status_relative_paths;
void wt_status_prepare(struct wt_status *s); void wt_status_prepare(struct wt_status *s);
void wt_status_print(struct wt_status *s); void wt_status_print(struct wt_status *s);