aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/git-status.txt9
-rw-r--r--builtin-commit.c9
2 files changed, 15 insertions, 3 deletions
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index b5939d6b5..e9363d997 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -27,6 +27,11 @@ OPTIONS
--short::
Give the output in the short-format.
+--porcelain::
+ Give the output in a stable, easy-to-parse format for scripts.
+ Currently this is identical to --short output, but is guaranteed
+ not to change in the future, making it safe for scripts.
+
-u[<mode>]::
--untracked-files[=<mode>]::
Show untracked files (Default: 'all').
@@ -45,8 +50,8 @@ used to change the default for when the option is not
specified.
-z::
- Terminate entries with NUL, instead of LF. This implies `-s`
- (short status) output format.
+ Terminate entries with NUL, instead of LF. This implies
+ the `--porcelain` output format if no other format is given.
OUTPUT
diff --git a/builtin-commit.c b/builtin-commit.c
index aa4a35879..ffdee31bb 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -995,12 +995,16 @@ int cmd_status(int argc, const char **argv, const char *prefix)
static enum {
STATUS_FORMAT_LONG,
STATUS_FORMAT_SHORT,
+ STATUS_FORMAT_PORCELAIN,
} status_format = STATUS_FORMAT_LONG;
unsigned char sha1[20];
static struct option builtin_status_options[] = {
OPT__VERBOSE(&verbose),
OPT_SET_INT('s', "short", &status_format,
"show status concisely", STATUS_FORMAT_SHORT),
+ OPT_SET_INT(0, "porcelain", &status_format,
+ "show porcelain output format",
+ STATUS_FORMAT_PORCELAIN),
OPT_BOOLEAN('z', "null", &null_termination,
"terminate entries with NUL"),
{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg,
@@ -1011,7 +1015,7 @@ int cmd_status(int argc, const char **argv, const char *prefix)
};
if (null_termination && status_format == STATUS_FORMAT_LONG)
- status_format = STATUS_FORMAT_SHORT;
+ status_format = STATUS_FORMAT_PORCELAIN;
wt_status_prepare(&s);
git_config(git_status_config, &s);
@@ -1032,6 +1036,9 @@ int cmd_status(int argc, const char **argv, const char *prefix)
case STATUS_FORMAT_SHORT:
short_print(&s, null_termination);
break;
+ case STATUS_FORMAT_PORCELAIN:
+ short_print(&s, null_termination);
+ break;
case STATUS_FORMAT_LONG:
s.verbose = verbose;
if (s.relative_paths)