Junio C Hamano <gits...@pobox.com> writes:

> Well, reading builtin/merge-base.c::handle_fork_point(), I think the
> intended behaviour is:
>
>  - die() when input is not well formed (e.g. bad commit object,
>    ambigous ref name, etc.); there is an error worth reporting in
>    this case.
>
>  - show one that used to sit at the tip of the ref, if exists, and
>    signal success with exit status 0; there of course is no error in
>    this case.
>
>  - if there is no such fork point found, signal failure with exit
>    status 1; nothing is written to the standard output as there is
>    no fork point to be shown, and nothing is written to the standard
>    error.
>
> I do not think the code considers the last case as an error, i.e. it
> is just as natural not to have any fork point, as there is one.
>
> It might be OK to teach the command to say "no fork point found" to
> the standard error under "--verbose" mode in the last case, but
> since the command does not take --verbose or --quiet, I have a
> feeling that everything is working as designed.

I forgot to say that the behaviour above used by the "fork point"
mode seems to match the behaviour of the more established normal
"merge base" mode.  builtin/merge-base.c::show_merge_base() also
follows the same "die if the input is faulty, give output and
succeed if a merge base is found, otherwise be silent and signal
failure with exit code" pattern.

Reply via email to