From: Johannes Schindelin <johannes.schindelin@gmx.de>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Jeff King" <peff@peff.net>, "Johannes Sixt" <j6t@kdbg.org>,
"Duy Nguyen" <pclouds@gmail.com>,
"Jakub Narębski" <jnareb@gmail.com>
Subject: [PATCH v4 11/16] am -3: use merge_recursive() directly again
Date: Fri, 22 Jul 2016 14:25:40 +0200 (CEST) [thread overview]
Message-ID: <667d2f991f1423b138a746f4c685b13c5b572a83.1469187653.git.johannes.schindelin@gmx.de> (raw)
In-Reply-To: <cover.1469187652.git.johannes.schindelin@gmx.de>
Last October, we had to change this code to run `git merge-recursive`
in a child process: git-am wants to print some helpful advice when the
merge failed, but the code in question was not prepared to return, it
die()d instead.
We are finally at a point when the code *is* prepared to return errors,
and can avoid the child process again.
This reverts commit c63d4b2 (am -3: do not let failed merge from
completing the error codepath, 2015-10-09), with the necessary changes
to adjust for the fact that Git's source code changed in the meantime
(such as: using OIDs instead of hashes in the recursive merge, and a
removed gender bias).
Note: the code now calls merge_recursive_generic() again. Unlike
merge_trees() and merge_recursive(), this function returns 0 upon success,
as most of Git's functions. Therefore, the error value -1 naturally is
handled correctly, and we do not have to take care of it specifically.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
builtin/am.c | 62 +++++++++++++++++++++---------------------------------------
1 file changed, 22 insertions(+), 40 deletions(-)
diff --git a/builtin/am.c b/builtin/am.c
index b77bf11..cfb79ea 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -1579,47 +1579,18 @@ static int build_fake_ancestor(const struct am_state *state, const char *index_f
}
/**
- * Do the three-way merge using fake ancestor, their tree constructed
- * from the fake ancestor and the postimage of the patch, and our
- * state.
- */
-static int run_fallback_merge_recursive(const struct am_state *state,
- unsigned char *orig_tree,
- unsigned char *our_tree,
- unsigned char *their_tree)
-{
- struct child_process cp = CHILD_PROCESS_INIT;
- int status;
-
- cp.git_cmd = 1;
-
- argv_array_pushf(&cp.env_array, "GITHEAD_%s=%.*s",
- sha1_to_hex(their_tree), linelen(state->msg), state->msg);
- if (state->quiet)
- argv_array_push(&cp.env_array, "GIT_MERGE_VERBOSITY=0");
-
- argv_array_push(&cp.args, "merge-recursive");
- argv_array_push(&cp.args, sha1_to_hex(orig_tree));
- argv_array_push(&cp.args, "--");
- argv_array_push(&cp.args, sha1_to_hex(our_tree));
- argv_array_push(&cp.args, sha1_to_hex(their_tree));
-
- status = run_command(&cp) ? (-1) : 0;
- discard_cache();
- read_cache();
- return status;
-}
-
-/**
* Attempt a threeway merge, using index_path as the temporary index.
*/
static int fall_back_threeway(const struct am_state *state, const char *index_path)
{
- unsigned char orig_tree[GIT_SHA1_RAWSZ], their_tree[GIT_SHA1_RAWSZ],
- our_tree[GIT_SHA1_RAWSZ];
+ struct object_id orig_tree, their_tree, our_tree;
+ const struct object_id *bases[1] = { &orig_tree };
+ struct merge_options o;
+ struct commit *result;
+ char *their_tree_name;
- if (get_sha1("HEAD", our_tree) < 0)
- hashcpy(our_tree, EMPTY_TREE_SHA1_BIN);
+ if (get_oid("HEAD", &our_tree) < 0)
+ hashcpy(our_tree.hash, EMPTY_TREE_SHA1_BIN);
if (build_fake_ancestor(state, index_path))
return error("could not build fake ancestor");
@@ -1627,7 +1598,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
discard_cache();
read_cache_from(index_path);
- if (write_index_as_tree(orig_tree, &the_index, index_path, 0, NULL))
+ if (write_index_as_tree(orig_tree.hash, &the_index, index_path, 0, NULL))
return error(_("Repository lacks necessary blobs to fall back on 3-way merge."));
say(state, stdout, _("Using index info to reconstruct a base tree..."));
@@ -1643,7 +1614,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
init_revisions(&rev_info, NULL);
rev_info.diffopt.output_format = DIFF_FORMAT_NAME_STATUS;
diff_opt_parse(&rev_info.diffopt, &diff_filter_str, 1, rev_info.prefix);
- add_pending_sha1(&rev_info, "HEAD", our_tree, 0);
+ add_pending_sha1(&rev_info, "HEAD", our_tree.hash, 0);
diff_setup_done(&rev_info.diffopt);
run_diff_index(&rev_info, 1);
}
@@ -1652,7 +1623,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
return error(_("Did you hand edit your patch?\n"
"It does not apply to blobs recorded in its index."));
- if (write_index_as_tree(their_tree, &the_index, index_path, 0, NULL))
+ if (write_index_as_tree(their_tree.hash, &the_index, index_path, 0, NULL))
return error("could not write tree");
say(state, stdout, _("Falling back to patching base and 3-way merge..."));
@@ -1668,11 +1639,22 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
* changes.
*/
- if (run_fallback_merge_recursive(state, orig_tree, our_tree, their_tree)) {
+ init_merge_options(&o);
+
+ o.branch1 = "HEAD";
+ their_tree_name = xstrfmt("%.*s", linelen(state->msg), state->msg);
+ o.branch2 = their_tree_name;
+
+ if (state->quiet)
+ o.verbosity = 0;
+
+ if (merge_recursive_generic(&o, &our_tree, &their_tree, 1, bases, &result)) {
rerere(state->allow_rerere_autoupdate);
+ free(their_tree_name);
return error(_("Failed to merge in the changes."));
}
+ free(their_tree_name);
return 0;
}
--
2.9.0.281.g286a8d9
next prev parent reply other threads:[~2016-07-22 12:26 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
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 ` Johannes Schindelin [this message]
2016-07-25 22:19 ` [PATCH v4 11/16] am -3: use merge_recursive() directly again 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=667d2f991f1423b138a746f4c685b13c5b572a83.1469187653.git.johannes.schindelin@gmx.de \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=jnareb@gmail.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sunshine@sunshineco.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).