Linus Torvalds [off-list ref] writes:
On Fri, 2 Mar 2007, Jakub Narebski wrote:
quoted
Andy Parkins wrote:
quoted
+ - prettyfilter
+ Run by git-cat-file or git-show when content is being pretty-printed
+ for display to the user. If no prettyfilter is set, then it should
+ default to outfilter.
I'd rather have plumbing operate without filters (if it is possible),
so git-cat-file would not run prettyfilter, and git-show would run it.
That really sucks. I do "git show xyz > filname" all the time, and while
it's been about diffs and commits, I could imagine doing the same thing
for things like "git show v2.6.17:Documentation/logo.gif > some.gif" too.
Yes, I know could do "git cat-file -p .." instead, but since we added "git
show", and made it do the Right Thing (tm) for blobs, I've come to use it
more (which is as it should be: "cat-file" is low-level plumbing, while
"git show" is what you'd expect users to use.
So I really think that the issue here is that the *pager* should do the
right thing...
Sorry, but I do not think that would work because of the way we
setup our pager. The original process turns into the PAGER and
child ships the data to it.
$ git show -s master maint :t/test4012.png
I do not particularly think the prettyfilter is useful in
practice (it was just a fun toy I did to convince me that I can
use it for things other than input/output munging), but at least
we could make it a bit more usable by this, on top of 'pu':
diff --git a/builtin-log.c b/builtin-log.c
index 86062d3..bc26358 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -116,7 +116,7 @@ static int show_object(const unsigned char *sha1, const char *path, int nohead)
if (size <= offset)
goto finish;
- if (path) {
+ if (pager_in_use && path) {
const struct pathattr *a = pathattr_lookup(path);
if (a && a->pretty) {
pretty = a->pretty;