Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> writes: > When a command is supposed to use textconv filters (by default or with > "--textconv") and none are configured then the blob is output without > conversion; the only exception to this rule is "cat-file --textconv". > > Make it behave like the rest of textconv aware commands. > > Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> > --- > builtin/cat-file.c | 18 ++++++++---------- > t/t8007-cat-file-textconv.sh | 20 +++++--------------- > 2 files changed, 13 insertions(+), 25 deletions(-) > > diff --git a/builtin/cat-file.c b/builtin/cat-file.c > index 045cee7..bd62373 100644 > --- a/builtin/cat-file.c > +++ b/builtin/cat-file.c > @@ -48,6 +48,14 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name) > case 'e': > return !has_sha1_file(sha1); > > + case 'c': > + if (!obj_context.path[0]) > + die("git cat-file --textconv %s: <object> must be <sha1:path>", > + obj_name); > + > + if (textconv_object(obj_context.path, obj_context.mode, sha1, 1, &buf, &size)) > + break; > + > case 'p': Yeah, falling back to the 'p' case is a lot more sensible. > type = sha1_object_info(sha1, NULL); > if (type < 0) > @@ -70,16 +78,6 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name) > /* otherwise just spit out the data */ > break; > > - case 'c': > - if (!obj_context.path[0]) > - die("git cat-file --textconv %s: <object> must be <sha1:path>", > - obj_name); > - > - if (!textconv_object(obj_context.path, obj_context.mode, sha1, 1, &buf, &size)) > - die("git cat-file --textconv: unable to run textconv on %s", > - obj_name); > - break; > - > case 0: > if (type_from_string(exp_type) == OBJ_BLOB) { > unsigned char blob_sha1[20]; > diff --git a/t/t8007-cat-file-textconv.sh b/t/t8007-cat-file-textconv.sh > index 78a0085..83c6636 100755 > --- a/t/t8007-cat-file-textconv.sh > +++ b/t/t8007-cat-file-textconv.sh > @@ -22,11 +22,11 @@ test_expect_success 'setup ' ' > ' > > cat >expected <<EOF > -fatal: git cat-file --textconv: unable to run textconv on :one.bin > +bin: test version 2 > EOF > > test_expect_success 'no filter specified' ' > - git cat-file --textconv :one.bin 2>result > + git cat-file --textconv :one.bin >result && > test_cmp expected result > ' > > @@ -36,10 +36,6 @@ test_expect_success 'setup textconv filters' ' > git config diff.test.cachetextconv false > ' > > -cat >expected <<EOF > -bin: test version 2 > -EOF > - > test_expect_success 'cat-file without --textconv' ' > git cat-file blob :one.bin >result && > test_cmp expected result > @@ -73,25 +69,19 @@ test_expect_success 'cat-file --textconv on previous commit' ' > ' > > test_expect_success SYMLINKS 'cat-file without --textconv (symlink)' ' > + printf "%s" "one.bin" >expected && > git cat-file blob :symlink.bin >result && > - printf "%s" "one.bin" >expected > test_cmp expected result > ' > > > test_expect_success SYMLINKS 'cat-file --textconv on index (symlink)' ' > - ! git cat-file --textconv :symlink.bin 2>result && > - cat >expected <<\EOF && > -fatal: git cat-file --textconv: unable to run textconv on :symlink.bin > -EOF > + git cat-file --textconv :symlink.bin >result && > test_cmp expected result > ' > > test_expect_success SYMLINKS 'cat-file --textconv on HEAD (symlink)' ' > - ! git cat-file --textconv HEAD:symlink.bin 2>result && > - cat >expected <<EOF && > -fatal: git cat-file --textconv: unable to run textconv on HEAD:symlink.bin > -EOF > + git cat-file --textconv HEAD:symlink.bin >result && > test_cmp expected result > ' -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html