* [PATCH] show-diff -z option for machine readable output.
@ 2005-04-16 23:30 Junio C Hamano
0 siblings, 0 replies; only message in thread
From: Junio C Hamano @ 2005-04-16 23:30 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
This patch adds the -z option to the show-diff command,
primarily for use by scripts. The information emitted is
similar to that of -q option, but in a more machine readable
form. Records are terminated with NUL instead of LF, so that
the scripts can deal with pathnames with embedded newlines.
To be applied on top of my previous patch:
[PATCH] Optionally tell show-diff to show only named files.
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
show-diff.c | 28 +++++++++++++++++++---------
1 files changed, 19 insertions(+), 9 deletions(-)
show-diff.c: 0c5fb1a381a6c6689dca3f52d0c66bb591cadb39
--- show-diff.c
+++ show-diff.c 2005-04-16 16:23:40.000000000 -0700
@@ -55,7 +55,7 @@
}
}
-static const char *show_diff_usage = "show-diff [-s] [-q] [paths...]";
+static const char *show_diff_usage = "show-diff [-s] [-q] [-z] [paths...]";
static int matches_pathspec(struct cache_entry *ce, char **spec, int cnt)
{
@@ -76,6 +76,7 @@
{
int silent = 0;
int silent_on_nonexisting_files = 0;
+ int machine_readable = 0;
int entries = read_cache();
int i;
@@ -84,6 +85,9 @@
silent_on_nonexisting_files = silent = 1;
else if (!strcmp(argv[1], "-q"))
silent_on_nonexisting_files = 1;
+ else if (!strcmp(argv[1], "-z")) {
+ machine_readable = 1;
+ }
else
usage(show_diff_usage);
argv++; argc--;
@@ -99,7 +103,7 @@
for (i = 0; i < entries; i++) {
struct stat st;
struct cache_entry *ce = active_cache[i];
- int n, changed;
+ int changed;
unsigned long size;
char type[20];
void *new;
@@ -111,18 +115,24 @@
if (stat(ce->name, &st) < 0) {
if (errno == ENOENT && silent_on_nonexisting_files)
continue;
- printf("%s: %s\n", ce->name, strerror(errno));
- if (errno == ENOENT)
- show_diff_empty(ce);
+ if (machine_readable)
+ printf("X %s%c", ce->name, 0);
+ else {
+ printf("%s: %s\n", ce->name, strerror(errno));
+ if (errno == ENOENT)
+ show_diff_empty(ce);
+ }
continue;
}
changed = cache_match_stat(ce, &st);
if (!changed)
continue;
- printf("%s: ", ce->name);
- for (n = 0; n < 20; n++)
- printf("%02x", ce->sha1[n]);
- printf("\n");
+ if (!machine_readable)
+ printf("%s: %s\n", ce->name, sha1_to_hex(ce->sha1));
+ else {
+ printf("%s %s%c", sha1_to_hex(ce->sha1), ce->name, 0);
+ continue;
+ }
fflush(stdout);
if (silent)
continue;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-04-16 23:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-16 23:30 [PATCH] show-diff -z option for machine readable output Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox