From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 3/9] Prepare the builtins for a libified merge_recursive()
Date: Fri, 1 Jul 2016 12:14:10 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.20.1607011123550.12947@virtualbox> (raw)
In-Reply-To: <xmqqziq33ju2.fsf@gitster.mtv.corp.google.com>
Hi Junio,
On Wed, 29 Jun 2016, Junio C Hamano wrote:
> Johannes Schindelin <johannes.schindelin@gmx.de> writes:
>
> > A truly libified function does not die() just for fun.
>
> The sentence is wasting bits. After all, a helper function in
> run-once-and-exit program does not die() just for fun, either.
Given that I had a hard time when reviewing Christian's apply patches to
drive home the message that it is not okay for library functions to call
die() or exit(), I happen to disagree with your notion that this sentence
is wasting bits.
This sentence does not so much target *you* personally as audience, but
the occasional reader of the log who wonders: "Why don't we just call
die()? We would not have to worry about passing back the return value
through all those long call chains..."
> > As such, the recursive merge will convert all die() calls to return -1
> > instead in the next commits, giving the caller a chance at least to
> > print some helpful message.
> >
> > Let's prepare the builtins for this fatal error condition, even if we do
> > not really do more than imitating the previous die()'s exit(128): this is
> > what callers of e.g. `git merge` have come to expect.
>
> One thing missing is your design decision and justification.
>
> For example, the above explanation hints that the original code in
> this hunk expected merge_trees() to die() with some useful message
> when there is an error condition, but merge_trees() is going to be
> improved not to die() itself and return -1 instead to signal an
> error, so that the caller can react more flexibly, and this is a
> step to prepare for the version of merge_trees() that no longer
> dies.
Okay, I will replace the "As such..." paragraph with a modified version of
your paraphrased explanation.
> > - merge_trees(&o, new->commit->tree, work,
> > + ret = merge_trees(&o, new->commit->tree, work,
> > old->commit->tree, &result);
> > + if (ret < 0)
> > + exit(128);
>
> The postimage of the patch tells us that the caller is now
> responsible for exiting with status 128, but neither the proposed
> log message nor the above hunk tells us where the message the
> original code must have given to the end user from die() inside
> merge_trees(). The updated caller just exits, so a natural guess is
> that the calls to die() have been changed to fprintf(stderr) with
> the patch.
Even more natural is it to guess that the code will call error(), just
like we do almost everywhere else.
But you are right, I do not have to leave the reader guessing. Better to
err on the side of being slightly verbose than to be so concise that
nobody understands what I mean.
> But that does not mesh very well with the stated objective of the
> patch. The callers want flexibility to do their own error handling,
> including giving their own message, so letting merge_trees() to
> still write the same message to the standard error stream would not
> work well for them. A caller may want to do merge_trees() just to
> see if it succeeds, without wanting to give _any_ indication of that
> is happening to the user, because it has an alternate/fallback code
> if merge_trees() fails, for example (analogy: "am -3" first tries a
> straight patch application before fallking back to 3-way merge; it
> may not want to show the error from the first attempt).
>
> The reader _can_ guess that this step ignores the error-message
> issue, and improving it later (or keep ignoring that issue) might be
> OK in the context of this patch series, but it is necessary to be
> upfront to the readers what the design choices were and which one of
> those choices the proposed patch adopted as its design for them to
> be able to evaluate the patch series correctly.
To be honest, I did not even think about the error message issue because
my primary concern is to teach the sequencer to perform rebase -i's grunt
work. And while we usually suppress the output of the commands in rebase
-i, we do show them in case of errors.
It will make things more complex, unfortunately, even if it will be
straight-forward: there is already a strbuf and a flag in struct
merge_options to collect output. The merge_options are simply not passed
through to all of the previously die()ing functions yet.
I won't have time to get this implemented this week, unfortunately. So
please do not expect the next iteration of this patch series before next
week.
I could imagine that you wanted even more fine-grained control, where we
have a range of return values indicating different error conditions.
However, I already spent two weeks' worth of work to get this far, and
would like to defer that task to the developer who will actually need
these fine-grained return values (if we ever will need them).
Ciao,
Dscho
P.S.: For the future, would you mind deleting the quoted remainder of my
patches when there are no further comments? I deleted a footer of 73
unnecessary lines in this mail. It's no big deal if this is too tedious,
but it would make my life easier.
next prev parent reply other threads:[~2016-07-01 10:22 UTC|newest]
Thread overview: 262+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-29 11:36 [PATCH 0/9] Use merge_recursive() directly in the builtin am Johannes Schindelin
2016-06-29 11:36 ` [PATCH 1/9] Report bugs consistently Johannes Schindelin
2016-06-29 15:11 ` Johannes Schindelin
2016-06-29 18:12 ` Eric Sunshine
2016-06-30 8:41 ` Johannes Schindelin
2016-06-29 20:50 ` Junio C Hamano
2016-06-30 8:42 ` Johannes Schindelin
2016-06-30 9:23 ` Jeff King
2016-07-01 13:51 ` Johannes Schindelin
2016-07-01 18:16 ` Jeff King
2016-06-30 5:38 ` Johannes Sixt
2016-06-30 8:45 ` Johannes Schindelin
2016-07-02 5:11 ` Duy Nguyen
2016-07-02 7:25 ` Johannes Schindelin
2016-07-02 8:01 ` Duy Nguyen
2016-07-05 11:32 ` Johannes Schindelin
2016-06-29 11:36 ` [PATCH 2/9] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-06-29 18:35 ` Junio C Hamano
2016-07-01 9:23 ` Johannes Schindelin
2016-07-01 15:31 ` Junio C Hamano
2016-07-02 7:20 ` Johannes Schindelin
2016-07-06 15:30 ` Junio C Hamano
2016-07-07 11:17 ` Johannes Schindelin
2016-06-29 11:36 ` [PATCH 3/9] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-06-29 18:56 ` Junio C Hamano
2016-07-01 10:14 ` Johannes Schindelin [this message]
2016-07-01 15:43 ` Junio C Hamano
2016-07-02 7:24 ` Johannes Schindelin
2016-06-29 11:36 ` [PATCH 4/9] merge_recursive: abort properly upon errors Johannes Schindelin
2016-06-29 20:08 ` Junio C Hamano
2016-07-01 10:16 ` Johannes Schindelin
2016-07-01 15:56 ` Junio C Hamano
2016-07-02 11:30 ` Johannes Schindelin
2016-06-29 11:36 ` [PATCH 5/9] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-06-29 20:21 ` Junio C Hamano
2016-07-01 13:48 ` Johannes Schindelin
2016-07-01 15:02 ` Eric Wong
2016-06-29 11:37 ` [PATCH 6/9] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-06-29 11:37 ` [PATCH 7/9] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-06-29 21:06 ` Junio C Hamano
2016-07-01 11:08 ` Johannes Schindelin
2016-06-29 11:37 ` [PATCH 8/9] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-06-29 21:19 ` Junio C Hamano
2016-07-01 11:14 ` Johannes Schindelin
2016-06-29 11:38 ` [PATCH 9/9] am: make a direct call to merge_recursive Johannes Schindelin
2016-06-29 17:45 ` Junio C Hamano
2016-06-30 8:38 ` Johannes Schindelin
2016-07-01 16:03 ` Junio C Hamano
2016-06-29 21:23 ` Junio C Hamano
2016-07-01 12:46 ` Johannes Schindelin
2016-07-05 11:22 ` [PATCH v2 00/17] Use merge_recursive() directly in the builtin am Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 01/17] Verify that `git pull --rebase` shows the helpful advice when failing Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 02/17] Report bugs consistently Johannes Schindelin
2016-07-05 13:05 ` Jakub Narębski
2016-07-05 13:38 ` Johannes Schindelin
2016-07-06 15:30 ` Duy Nguyen
2016-07-07 11:23 ` Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 03/17] Avoid translating bug messages Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 04/17] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 05/17] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 06/17] merge_recursive: abort properly upon errors Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 07/17] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 08/17] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 09/17] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 10/17] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-07-05 11:23 ` [PATCH v2 11/17] am: counteract gender bias Johannes Schindelin
2016-07-06 21:22 ` Junio C Hamano
2016-07-07 11:30 ` Johannes Schindelin
2016-07-07 15:26 ` Junio C Hamano
2016-07-07 15:54 ` Johannes Schindelin
2016-07-07 16:03 ` Junio C Hamano
2016-07-05 11:24 ` [PATCH v2 12/17] am -3: use merge_recursive() directly again Johannes Schindelin
2016-07-05 11:24 ` [PATCH v2 13/17] merge-recursive: flush output buffer before printing error messages Johannes Schindelin
2016-07-05 11:24 ` [PATCH v2 14/17] merge-recursive: write the commit title in one go Johannes Schindelin
2016-07-05 11:24 ` [PATCH v2 15/17] merge-recursive: offer an option to retain the output in 'obuf' Johannes Schindelin
2016-07-05 11:24 ` [PATCH v2 16/17] Ensure that the output buffer is released after calling merge_trees() Johannes Schindelin
2016-07-05 11:24 ` [PATCH v2 17/17] merge-recursive: flush output buffer even when erroring out Johannes Schindelin
2016-07-06 21:26 ` [PATCH v2 00/17] Use merge_recursive() directly in the builtin am Junio C Hamano
2016-07-07 11:16 ` Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 00/16] " Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 01/16] Verify that `git pull --rebase` shows the helpful advice when failing Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 02/16] Report bugs consistently Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 03/16] Avoid translating bug messages Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 04/16] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 05/16] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 06/16] merge_recursive: abort properly upon errors Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 07/16] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 08/16] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 09/16] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 10/16] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-07-07 14:35 ` [PATCH v3 11/16] am -3: use merge_recursive() directly again Johannes Schindelin
2016-07-07 14:36 ` [PATCH v3 12/16] merge-recursive: flush output buffer before printing error messages Johannes Schindelin
2016-07-07 14:36 ` [PATCH v3 13/16] merge-recursive: write the commit title in one go Johannes Schindelin
2016-07-07 14:36 ` [PATCH v3 14/16] merge-recursive: offer an option to retain the output in 'obuf' Johannes Schindelin
2016-07-07 14:36 ` [PATCH v3 15/16] Ensure that the output buffer is released after calling merge_trees() Johannes Schindelin
2016-07-07 14:36 ` [PATCH v3 16/16] merge-recursive: flush output buffer even when erroring out Johannes Schindelin
2016-07-12 21:27 ` [PATCH v3 00/16] Use merge_recursive() directly in the builtin am Junio C Hamano
2016-07-14 14:03 ` Johannes Schindelin
2016-07-14 19:39 ` Junio C Hamano
2016-07-19 0:17 ` Junio C Hamano
2016-07-19 12:31 ` Johannes Schindelin
2016-07-19 14:28 ` Johannes Schindelin
2016-07-19 19:33 ` Junio C Hamano
2016-07-22 12:23 ` [PATCH v4 " Johannes Schindelin
2016-07-22 12:24 ` [PATCH v4 01/16] Verify that `git pull --rebase` shows the helpful advice when failing Johannes Schindelin
2016-07-25 21:39 ` Junio C Hamano
2016-07-26 12:21 ` Johannes Schindelin
2016-07-22 12:24 ` [PATCH v4 02/16] Report bugs consistently Johannes Schindelin
2016-07-25 21:44 ` Junio C Hamano
2016-07-25 22:17 ` Jeff King
2016-07-25 22:36 ` Junio C Hamano
2016-07-26 12:24 ` Johannes Schindelin
2016-07-22 12:24 ` [PATCH v4 03/16] Avoid translating bug messages Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 04/16] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 05/16] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 06/16] merge_recursive: abort properly upon errors Johannes Schindelin
2016-07-25 22:09 ` Junio C Hamano
2016-07-26 12:26 ` Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 07/16] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 08/16] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 09/16] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 10/16] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 11/16] am -3: use merge_recursive() directly again Johannes Schindelin
2016-07-25 22:19 ` Junio C Hamano
2016-07-26 12:30 ` Johannes Schindelin
2016-07-26 17:12 ` Junio C Hamano
2016-07-22 12:25 ` [PATCH v4 12/16] merge-recursive: flush output buffer before printing error messages Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 13/16] merge-recursive: write the commit title in one go Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 14/16] merge-recursive: offer an option to retain the output in 'obuf' Johannes Schindelin
2016-07-22 12:25 ` [PATCH v4 15/16] Ensure that the output buffer is released after calling merge_trees() Johannes Schindelin
2016-07-22 12:26 ` [PATCH v4 16/16] merge-recursive: flush output buffer even when erroring out Johannes Schindelin
2016-07-26 16:05 ` [PATCH v5 00/16] Use merge_recursive() directly in the builtin am Johannes Schindelin
2016-07-26 16:05 ` [PATCH v5 01/16] t5520: verify that `pull --rebase` shows the helpful advice when failing Johannes Schindelin
2016-07-26 16:05 ` [PATCH v5 02/16] Report bugs consistently Johannes Schindelin
2016-07-26 16:05 ` [PATCH v5 03/16] Avoid translating bug messages Johannes Schindelin
2016-07-26 16:05 ` [PATCH v5 04/16] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 05/16] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 06/16] merge_recursive: abort properly upon errors Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 07/16] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 08/16] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 09/16] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 10/16] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 11/16] am -3: use merge_recursive() directly again Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 12/16] merge-recursive: flush output buffer before printing error messages Johannes Schindelin
2016-07-27 21:37 ` Junio C Hamano
2016-07-27 21:53 ` Junio C Hamano
2016-08-01 9:18 ` Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 13/16] merge-recursive: write the commit title in one go Johannes Schindelin
2016-07-27 22:36 ` Junio C Hamano
2016-08-01 9:53 ` Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 14/16] merge-recursive: offer an option to retain the output in 'obuf' Johannes Schindelin
2016-07-27 22:09 ` Junio C Hamano
2016-07-28 0:17 ` Junio C Hamano
2016-08-01 9:34 ` Johannes Schindelin
2016-08-01 19:09 ` Junio C Hamano
2016-08-02 8:01 ` Johannes Schindelin
2016-08-02 21:19 ` Junio C Hamano
2016-08-01 9:35 ` Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 15/16] Ensure that the output buffer is released after calling merge_trees() Johannes Schindelin
2016-07-27 22:15 ` Junio C Hamano
2016-08-01 9:40 ` Johannes Schindelin
2016-07-26 16:06 ` [PATCH v5 16/16] merge-recursive: flush output buffer even when erroring out Johannes Schindelin
2016-07-27 22:20 ` Junio C Hamano
2016-08-01 9:49 ` Johannes Schindelin
2016-08-01 18:32 ` Junio C Hamano
2016-08-01 11:36 ` [PATCH v6 00/16] Use merge_recursive() directly in the builtin am Johannes Schindelin
2016-08-01 11:36 ` [PATCH v6 01/16] t5520: verify that `pull --rebase` shows the helpful advice when failing Johannes Schindelin
2016-08-01 11:36 ` [PATCH v6 02/16] Report bugs consistently Johannes Schindelin
2016-08-01 11:43 ` [PATCH v6 03/16] Avoid translating bug messages Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 04/16] merge-recursive: clarify code in was_tracked() Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 05/16] Prepare the builtins for a libified merge_recursive() Johannes Schindelin
2016-08-01 18:40 ` Junio C Hamano
2016-08-02 8:02 ` Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 06/16] merge_recursive: abort properly upon errors Johannes Schindelin
2016-08-01 18:41 ` Junio C Hamano
2016-08-02 8:12 ` Johannes Schindelin
2016-08-02 21:26 ` Junio C Hamano
2016-08-03 11:59 ` patch submission process, was " Johannes Schindelin
2016-08-03 15:33 ` Junio C Hamano
2016-08-03 16:07 ` Johannes Schindelin
2016-08-03 17:47 ` Stefan Beller
2016-08-04 15:58 ` Johannes Schindelin
2016-08-04 16:42 ` Stefan Beller
2016-08-04 20:17 ` Eric Wong
2016-08-05 8:24 ` Johannes Schindelin
2016-08-05 8:50 ` Eric Wong
2016-08-05 8:20 ` Johannes Schindelin
2016-08-05 17:59 ` Stefan Beller
2016-08-05 19:21 ` Josh Triplett
2016-08-05 21:01 ` Eric Wong
2016-08-06 8:58 ` Johannes Schindelin
2016-08-06 18:33 ` Junio C Hamano
2016-08-06 21:43 ` Eric Wong
2016-08-07 8:46 ` Johannes Schindelin
2016-08-08 17:22 ` Junio C Hamano
2016-08-09 11:48 ` Johannes Schindelin
2016-08-07 11:09 ` Lars Schneider
2016-08-08 17:29 ` Junio C Hamano
2016-08-09 11:41 ` Johannes Schindelin
2016-08-09 17:25 ` Junio C Hamano
2016-08-05 18:46 ` Eric Wong
2016-08-06 8:44 ` Johannes Schindelin
2016-08-05 11:59 ` Richard Ipsum
2016-08-05 15:24 ` Johannes Schindelin
2016-08-06 16:45 ` Richard Ipsum
2016-08-08 22:20 ` Michael Haggerty
2016-08-08 22:36 ` Junio C Hamano
2016-08-08 23:20 ` Michael Haggerty
2016-08-09 8:11 ` Michael J Gruber
2016-08-09 10:57 ` Jeff King
2016-08-10 0:46 ` Josh Triplett
2016-08-09 11:37 ` Jeff King
2016-08-09 17:34 ` Junio C Hamano
2016-08-09 17:50 ` Jeff King
2016-08-09 19:19 ` Junio C Hamano
2016-08-09 18:43 ` Duy Nguyen
2016-08-09 18:50 ` Stefan Beller
2016-08-09 18:58 ` Jeff King
2016-08-09 18:55 ` Jeff King
2016-08-09 18:36 ` Duy Nguyen
2016-08-09 18:38 ` Duy Nguyen
2016-08-09 4:22 ` Duy Nguyen
2016-08-09 9:17 ` Richard Ipsum
2016-08-09 10:34 ` Jeff King
2016-08-09 10:19 ` Michael Haggerty
2016-08-09 12:07 ` Johannes Schindelin
2016-08-09 18:28 ` Eric Wong
2016-08-10 0:55 ` Josh Triplett
2016-08-10 1:57 ` Eric Wong
2016-08-10 7:30 ` Jakub Narębski
2016-08-10 19:30 ` Josh Triplett
2016-08-10 21:14 ` Junio C Hamano
2016-08-05 14:55 ` Duy Nguyen
2016-08-05 15:13 ` Johannes Schindelin
2016-08-05 18:42 ` Philip Oakley
2016-08-06 8:38 ` Johannes Schindelin
2016-08-06 17:45 ` Philip Oakley
2016-08-03 16:34 ` Jeff King
2016-08-03 16:53 ` Junio C Hamano
2016-08-03 16:56 ` Jeff King
2016-08-04 15:29 ` Johannes Schindelin
2016-08-04 18:07 ` Jeff King
2016-08-04 21:12 ` Junio C Hamano
2016-08-05 8:17 ` Jeff King
2016-08-05 15:51 ` Johannes Schindelin
2016-08-02 22:28 ` Junio C Hamano
2016-08-01 11:44 ` [PATCH v6 07/16] merge-recursive: avoid returning a wholesale struct Johannes Schindelin
2016-08-04 18:09 ` Junio C Hamano
2016-08-01 11:44 ` [PATCH v6 08/16] merge-recursive: allow write_tree_from_memory() to error out Johannes Schindelin
2016-08-04 18:14 ` Junio C Hamano
2016-08-01 11:44 ` [PATCH v6 09/16] merge-recursive: handle return values indicating errors Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 10/16] merge-recursive: switch to returning errors instead of dying Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 11/16] am -3: use merge_recursive() directly again Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 12/16] merge-recursive: flush output buffer before printing error messages Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 13/16] merge-recursive: write the commit title in one go Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 14/16] merge-recursive: offer an option to retain the output in 'obuf' Johannes Schindelin
2016-08-01 11:44 ` [PATCH v6 15/16] Ensure that the output buffer is released after calling merge_trees() Johannes Schindelin
2016-08-04 18:18 ` Junio C Hamano
2016-08-01 11:44 ` [PATCH v6 16/16] merge-recursive: flush output buffer even when erroring out Johannes Schindelin
2016-08-04 18:20 ` Junio C Hamano
2016-08-05 15:41 ` Johannes Schindelin
2016-08-06 16:37 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.20.1607011123550.12947@virtualbox \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).