Michael J Gruber <g...@drmicha.warpmail.net> 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 <g...@drmicha.warpmail.net>
> ---
>  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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to