Re: [PATCH 3/3] format-patch: support --output option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 4, 2020 at 8:29 AM Jeff King <peff@xxxxxxxx> wrote:
> [...]
> The simplest solution would be to just disallow --output with
> format-patch, as nobody ever intended it to work. However, we have
> accidentally documented it (because format-patch includes diff-options).
> And it does work with "git log", which writes the whole output to the
> specified file. It's easy enough to make that work for format-patch,
> too: it's really the same as --stdout, but pointed at a specific file.
> [...]
> Signed-off-by: Jeff King <peff@xxxxxxxx>
> ---
> diff --git a/builtin/log.c b/builtin/log.c
> @@ -1942,11 +1942,18 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
> +       } else if (rev.diffopt.close_file) {
> +               /*
> +                * The diff code parsed --output; it has already opened the
> +                * file, but but we must instruct it not to close after each
> +                * diff.
> +                */
> +               rev.diffopt.close_file = 0;
>         } else {

The commit message's justification for supporting --output seems
reasonable. However, my knee-jerk reaction to the implementation was
that it feels overly magical and a bit too hacky. I can see the logic
in it but it also leaves a bad taste when the implementation has to
"undo" a side-effect of some other piece of code, which makes it feel
unplanned and fragile. The question which popped into my mind
immediately was "why not handle --output explicitly via
builtin_format_patch_options[] along with other first-class options?".
This review comment may or may not be actionable; it's just expressing
surprise and a bit of nose-wrinkling I experienced.

> diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
> @@ -1919,6 +1919,39 @@ test_expect_success 'format-patch -o overrides format.outputDirectory' '
> +test_expect_success 'format-patch forbids multiple outputs' '
> +       rm -fr outfile outdir &&
> +       test_must_fail \
> +               git format-patch --stdout --output=outfile &&
> +       test_must_fail \
> +               git format-patch --stdout --output-directory=outdir &&
> +       test_must_fail \
> +               git format-patch --output=outfile --output-directory=outdir
> +'

I would have expected to see this test added in patch [1/3], and then
extended by this patch with the addition of the --output case(s).



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux