Re: [PATCH 4/4] cat-file: support --textconv/--filters in batch mode
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Aug 18, 2016, 15:42 UTC
- Message-ID
- <20160818154213.GA17141@tb-raspi>
- In-Reply-To
- <2315ae5ab6918a7c1567f11a64093a860983bc20.1471524357.git.johannes.schindelin@gmx.de>
On Thu, Aug 18, 2016 at 02:46:28PM +0200, Johannes Schindelin wrote:
Show 70 quoted lines
> With this patch, --batch can be combined with --textconv or --filters.
> For this to work, the input needs to have the form
>
> <object name><single white space><path>
>
> so that the filters can be chosen appropriately.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> Documentation/git-cat-file.txt | 18 +++++++++++-----
> builtin/cat-file.c | 49 +++++++++++++++++++++++++++++++++++++-----
> t/t8010-cat-file-filters.sh | 10 +++++++++
> 3 files changed, 67 insertions(+), 10 deletions(-)
>
> diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt
> index 59a3c37..1f4d954 100644
> --- a/Documentation/git-cat-file.txt
> +++ b/Documentation/git-cat-file.txt
> @@ -10,7 +10,7 @@ SYNOPSIS
> --------
> [verse]
> 'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--use-path=<path>] <object>
> -'git cat-file' (--batch | --batch-check) [--follow-symlinks]
> +'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
>
> DESCRIPTION
> -----------
> @@ -20,7 +20,11 @@ object type, or `-s` is used to find the object size, or `--textconv` or
> `--filters` is used (which imply type "blob").
>
> In the second form, a list of objects (separated by linefeeds) is provided on
> -stdin, and the SHA-1, type, and size of each object is printed on stdout.
> +stdin, and the SHA-1, type, and size of each object is printed on stdout. The
> +output format can be overridden using the optional `<format>` argument. If
> +either `--textconv` or `--filters` was specified, the input is expected to
> +list the object names followed by the path name, separated by a single white
> +space, so that the appropriate drivers can be determined.
>
> OPTIONS
> -------
> @@ -72,13 +76,17 @@ OPTIONS
> --batch::
> --batch=<format>::
> Print object information and contents for each object provided
> - on stdin. May not be combined with any other options or arguments.
> - See the section `BATCH OUTPUT` below for details.
> + on stdin. May not be combined with any other options or arguments
> + except `--textconv` or `--filters`, in which case the input lines
> + also need to specify the path, separated by white space. See the
> + section `BATCH OUTPUT` below for details.
>
> --batch-check::
> --batch-check=<format>::
> Print object information for each object provided on stdin. May
> - not be combined with any other options or arguments. See the
> + not be combined with any other options or arguments except
> + `--textconv` or `--filters`, in which case the input lines also
> + need to specify the path, separated by white space. See the
> section `BATCH OUTPUT` below for details.
>
> --batch-all-objects::
> diff --git a/builtin/cat-file.c b/builtin/cat-file.c
> index 5ff58b3..5f91cf4 100644
> --- a/builtin/cat-file.c
> +++ b/builtin/cat-file.c
> @@ -17,6 +17,7 @@ struct batch_options {
> int print_contents;
> int buffer_output;
> int all_objects;
> + int cmdmode; /* may be 'w' or 'c' for --filters or --textconv */How do I read 'w' and 'c' ? wilter and cextconv ? Does it make sense to use an enum here ? Or a #define ?