summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2888605)
raw | patch | inline | side by side (parent: 2888605)
author | Kristian Høgsberg <krh@redhat.com> | |
Thu, 22 Nov 2007 02:54:49 +0000 (21:54 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 23 Nov 2007 01:05:05 +0000 (17:05 -0800) |
run_diff_index() and the entire diff machinery is hard coded to output
to stdout, so just redirect that and restore it when done.
Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
to stdout, so just redirect that and restore it when done.
Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-commit.c | patch | blob | history | |
wt-status.c | patch | blob | history |
diff --git a/builtin-commit.c b/builtin-commit.c
index e779db8ca3a7493a5353549b7ed562b68679a0ed..4de316a366d1ee7201d89b776a4a9a4b499d32b8 100644 (file)
--- a/builtin-commit.c
+++ b/builtin-commit.c
int header_len;
struct strbuf sb;
const char *index_file, *reflog_msg;
- char *nl;
+ char *nl, *p;
unsigned char commit_sha1[20];
struct ref_lock *ref_lock;
rollback_index_files();
exit(1);
}
+
+ /* Truncate the message just before the diff, if any. */
+ p = strstr(sb.buf, "\ndiff --git a/");
+ if (p != NULL)
+ strbuf_setlen(&sb, p - sb.buf);
+
stripspace(&sb, 1);
if (sb.len < header_len || message_is_empty(&sb, header_len)) {
rollback_index_files();
diff --git a/wt-status.c b/wt-status.c
index d3c10b8b8d2fcb0421cde0589e2eb96e8f534c87..0e0439f2c2d8f19abba0a683ce1b2ab3db6197ba 100644 (file)
--- a/wt-status.c
+++ b/wt-status.c
static void wt_status_print_verbose(struct wt_status *s)
{
struct rev_info rev;
+ int saved_stdout;
+
+ fflush(s->fp);
+
+ /* Sigh, the entire diff machinery is hardcoded to output to
+ * stdout. Do the dup-dance...*/
+ saved_stdout = dup(STDOUT_FILENO);
+ if (saved_stdout < 0 ||dup2(fileno(s->fp), STDOUT_FILENO) < 0)
+ die("couldn't redirect stdout\n");
+
init_revisions(&rev, NULL);
setup_revisions(0, NULL, &rev, s->reference);
rev.diffopt.output_format |= DIFF_FORMAT_PATCH;
rev.diffopt.detect_rename = 1;
wt_read_cache(s);
run_diff_index(&rev, 1);
+
+ fflush(stdout);
+
+ if (dup2(saved_stdout, STDOUT_FILENO) < 0)
+ die("couldn't restore stdout\n");
+ close(saved_stdout);
}
void wt_status_print(struct wt_status *s)