From: Michael J Gruber <git@drmicha.warpmail.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>
Subject: [RFC/PATCH 1/4] show: obey --textconv for blobs
Date: Wed, 6 Feb 2013 16:08:50 +0100 [thread overview]
Message-ID: <883f0163cb732932061a368ea9bc187c13e4ecca.1360162813.git.git@drmicha.warpmail.net> (raw)
In-Reply-To: <20130205201106.GA29248@sigill.intra.peff.net>
In-Reply-To: <cover.1360162813.git.git@drmicha.warpmail.net>
Currently, "diff" and "cat-file" for blobs obey "--textconv" options
(with the former defaulting to "--textconv" and the latter to
"--no-textconv") whereas "show" does not obey this option, even though
it takes diff options.
Make "show" on blobs behave like "diff", i.e. obey "--textconv" by
default and "--no-textconv" when given.
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
builtin/log.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index 8f0b2e8..f83870d 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -402,10 +402,28 @@ static void show_tagger(char *buf, int len, struct rev_info *rev)
strbuf_release(&out);
}
-static int show_blob_object(const unsigned char *sha1, struct rev_info *rev)
+static int show_blob_object(const unsigned char *sha1, struct rev_info *rev, const char *obj_name)
{
+ unsigned char sha1c[20];
+ struct object_context obj_context;
+ char *buf;
+ unsigned long size;
+
fflush(stdout);
- return stream_blob_to_fd(1, sha1, NULL, 0);
+ if (!DIFF_OPT_TST(&rev->diffopt, ALLOW_TEXTCONV))
+ return stream_blob_to_fd(1, sha1, NULL, 0);
+
+ if (get_sha1_with_context(obj_name, 0, sha1c, &obj_context))
+ die("Not a valid object name %s", obj_name);
+ if (!obj_context.path[0] ||
+ !textconv_object(obj_context.path, obj_context.mode, sha1c, 1, &buf, &size))
+ return stream_blob_to_fd(1, sha1, NULL, 0);
+
+ if (!buf)
+ die("git show %s: bad file", obj_name);
+
+ write_or_die(1, buf, size);
+ return 0;
}
static int show_tag_object(const unsigned char *sha1, struct rev_info *rev)
@@ -491,7 +509,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)
const char *name = objects[i].name;
switch (o->type) {
case OBJ_BLOB:
- ret = show_blob_object(o->sha1, NULL);
+ ret = show_blob_object(o->sha1, &rev, name);
break;
case OBJ_TAG: {
struct tag *t = (struct tag *)o;
--
1.8.1.2.752.g32d147e
next prev parent reply other threads:[~2013-02-06 15:09 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 15:27 [WIP/RFH/RFD/PATCH] grep: allow to use textconv filters Michael J Gruber
2013-02-04 17:12 ` Junio C Hamano
2013-02-05 8:48 ` Michael J Gruber
2013-02-05 11:13 ` Jeff King
2013-02-05 16:21 ` Michael J Gruber
2013-02-05 20:11 ` Jeff King
2013-02-06 15:08 ` [RFC/PATCH 0/4] textconv for show and grep Michael J Gruber
2013-02-06 15:08 ` Michael J Gruber [this message]
2013-02-06 16:53 ` [RFC/PATCH 1/4] show: obey --textconv for blobs Junio C Hamano
2013-02-06 22:12 ` Jeff King
2013-02-06 23:49 ` Junio C Hamano
2013-02-07 0:10 ` Jeff King
2013-02-07 0:26 ` Junio C Hamano
2013-02-07 8:48 ` Michael J Gruber
2013-02-06 22:06 ` Jeff King
2013-02-07 9:05 ` Michael J Gruber
2013-02-07 9:11 ` Jeff King
2013-02-07 9:34 ` Michael J Gruber
2013-02-07 9:43 ` Jeff King
2013-02-06 15:08 ` [RFC/PATCH 2/4] cat-file: do not die on --textconv without textconv filters Michael J Gruber
2013-02-06 16:47 ` Junio C Hamano
2013-02-06 22:19 ` Jeff King
2013-02-06 22:23 ` Junio C Hamano
2013-02-06 22:43 ` Jeff King
2013-02-06 15:08 ` [RFC/PATCH 3/4] grep: allow to use " Michael J Gruber
2013-02-06 15:12 ` Matthieu Moy
2013-02-06 22:23 ` Jeff King
2013-02-06 15:08 ` [RFC/PATCH 4/4] grep: obey --textconv for the case rev:path Michael J Gruber
2013-02-06 22:36 ` Jeff King
2013-02-07 9:05 ` Michael J Gruber
2013-02-07 9:26 ` Jeff King
2013-02-07 9:47 ` Michael J Gruber
2013-02-07 9:55 ` Jeff King
2013-02-07 10:31 ` Michael J Gruber
2013-02-07 18:03 ` Junio C Hamano
2013-02-08 11:27 ` Michael J Gruber
2013-02-06 16:55 ` [RFC/PATCH 0/4] textconv for show and grep Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=883f0163cb732932061a368ea9bc187c13e4ecca.1360162813.git.git@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).