Add a new output format option to git-status that is a more extreme form of the -z output that places a NUL between all parts of the record, and always has three entries per record, even when only two are relevant. This make the parsing of --porcelain output much simpler for the consumer. Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk> --- On Sat, 10 Apr 2010, Julian Phillips wrote:Something like this for the first variant (fixed three entries per record) perhaps ... (though a proper patch would probably want some tests too) builtin/commit.c | 6 ++++-- wt-status.c | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/builtin/commit.c b/builtin/commit.c index c5ab683..acbcefc 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1025,8 +1025,10 @@ int cmd_status(int argc, const char **argv, const char *prefix) OPT_SET_INT(0, "porcelain", &status_format, "show porcelain output format", STATUS_FORMAT_PORCELAIN), - OPT_BOOLEAN('z', "null", &null_termination, - "terminate entries with NUL"), + OPT_SET_INT('z', "null", &null_termination, + "terminate entries with NUL", 1), + OPT_SET_INT('Z', "intense-null", &null_termination, + "use NUL for all seperators, including absent values", 2), { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, "mode", "show untracked files, optional modes: all, normal, no. (Default: all)", diff --git a/wt-status.c b/wt-status.c index 8ca59a2..9f23ec6 100644 --- a/wt-status.c +++ b/wt-status.c @@ -663,7 +663,9 @@ static void wt_shortstatus_unmerged(int null_termination, struct string_list_ite case 7: how = "UU"; break; /* both modified */ } color_fprintf(s->fp, color(WT_STATUS_UNMERGED, s), "%s", how); - if (null_termination) { + if (null_termination == 2) { + fprintf(stdout, "%c%s%c%c", 0, it->string, 0, 0); + } else if (null_termination) { fprintf(stdout, " %s%c", it->string, 0); } else { struct strbuf onebuf = STRBUF_INIT; @@ -687,14 +689,19 @@ static void wt_shortstatus_status(int null_termination, struct string_list_item color_fprintf(s->fp, color(WT_STATUS_CHANGED, s), "%c", d->worktree_status); else putchar(' '); - putchar(' '); - if (null_termination) { - fprintf(stdout, "%s%c", it->string, 0); + if (null_termination == 2) { + char *file2 = ""; + if (d->head_path) + file2 = d->head_path; + fprintf(stdout, "%c%s%c%s%c", 0, it->string, 0, file2, 0); + } else if (null_termination) { + fprintf(stdout, " %s%c", it->string, 0); if (d->head_path) fprintf(stdout, "%s%c", d->head_path, 0); } else { struct strbuf onebuf = STRBUF_INIT; const char *one; + putchar(' '); if (d->head_path) { one = quote_path(d->head_path, -1, &onebuf, s->prefix); printf("%s -> ", one); @@ -709,7 +716,9 @@ static void wt_shortstatus_status(int null_termination, struct string_list_item static void wt_shortstatus_untracked(int null_termination, struct string_list_item *it, struct wt_status *s) { - if (null_termination) { + if (null_termination == 2) { + fprintf(stdout, "??%c%s%c%c", 0, it->string, 0, 0); + } else if (null_termination) { fprintf(stdout, "?? %s%c", it->string, 0); } else { struct strbuf onebuf = STRBUF_INIT; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Jesse Barnes | Re: [stable] [BUG][PATCH] cpqphp: fix kernel NULL pointer dereference |
| Greg KH | [003/136] p54usb: add Zcomax XG-705A usbid |
| Magnus Damm | [PATCH 03/07] ARM: Use shared GIC entry macros on Realview |
| Oliver Neukum | Re: [Bug #13682] The webcam stopped working when upgrading from 2.6.29 to 2.6.30 |
| Martin Schwidefsky | Re: [PATCH] optimized ktime_get[_ts] for GENERIC_TIME=y |
git: | |
| Junio C Hamano | Re: Some advanced index playing |
| Jeff King | Re: confusion over the new branch and merge config |
| Robin Rosenberg | Re: cvs2svn conversion directly to git ready for experimentation |
| Linus Torvalds | git binary size... |
| Ævar Arnfjörð Bjarmason | Re: Challenge with Git-Bash |
