diff options
author | Paul Mackerras <paulus@samba.org> | 2006-05-18 16:58:51 +1000 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-18 00:25:50 -0700 |
commit | 70f75cc96a3c590ac1c54c09c39446626f155ef7 (patch) | |
tree | 88a7314b1be7d8d782268f33197e09fbd98c3ba6 | |
parent | 18b01f4ff6db66b6419c7501bb303b643638b297 (diff) | |
download | git-70f75cc96a3c590ac1c54c09c39446626f155ef7.tar.gz |
Provide a way to flush git-diff-tree's output
Gitk wants to use git-diff-tree as a filter to tell it which ids from
a given list affect a set of files or directories. We don't want to
fork and exec a new git-diff-tree process for each batch of ids, since
there could be a lot of relatively small batches. For example, a
batch could contain as many ids as fit in gitk's headline display
window, i.e. 20 or so, and we would be processing a new batch every
time the user scrolls that window.
The --stdin flag to git-diff-tree is suitable for this, but the main
difficulty is that the output of git-diff-tree gets buffered and
doesn't get sent until the buffer is full.
This provides a way to get git-diff-tree to flush its output buffers.
If a blank line is supplied on git-diff-tree's standard input, it will
flush its output buffers and then accept further input.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | diff-tree.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/diff-tree.c b/diff-tree.c index 7207867a74..69bb74b310 100644 --- a/diff-tree.c +++ b/diff-tree.c @@ -138,7 +138,10 @@ int main(int argc, const char **argv) opt->diffopt.setup |= (DIFF_SETUP_USE_SIZE_CACHE | DIFF_SETUP_USE_CACHE); while (fgets(line, sizeof(line), stdin)) - diff_tree_stdin(line); + if (line[0] == '\n') + fflush(stdout); + else + diff_tree_stdin(line); return 0; } |