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 07/16] merge-recursive: avoid returning a wholesale struct
Date: Fri, 22 Jul 2016 14:25:22 +0200 (CEST) [thread overview]
Message-ID: <6a6b5421c8c95177b96b451abc972745e16585c9.1469187653.git.johannes.schindelin@gmx.de> (raw)
In-Reply-To: <cover.1469187652.git.johannes.schindelin@gmx.de>
It is technically allowed, as per C89, for functions' return type to
be complete structs (i.e. *not* just pointers to structs).
However, it was just an oversight of this developer when converting
Python code to C code in 6d297f8 (Status update on merge-recursive in
C, 2006-07-08) which introduced such a return type.
Besides, by converting this construct to pass in the struct, we can now
start returning a value that can indicate errors in future patches. This
will help the current effort to libify merge-recursive.c.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
merge-recursive.c | 106 ++++++++++++++++++++++++++++--------------------------
1 file changed, 56 insertions(+), 50 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c
index 2d4cb80..e1cea96 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -885,47 +885,47 @@ static int merge_3way(struct merge_options *o,
return merge_status;
}
-static struct merge_file_info merge_file_1(struct merge_options *o,
+static int merge_file_1(struct merge_options *o,
const struct diff_filespec *one,
const struct diff_filespec *a,
const struct diff_filespec *b,
const char *branch1,
- const char *branch2)
+ const char *branch2,
+ struct merge_file_info *result)
{
- struct merge_file_info result;
- result.merge = 0;
- result.clean = 1;
+ result->merge = 0;
+ result->clean = 1;
if ((S_IFMT & a->mode) != (S_IFMT & b->mode)) {
- result.clean = 0;
+ result->clean = 0;
if (S_ISREG(a->mode)) {
- result.mode = a->mode;
- oidcpy(&result.oid, &a->oid);
+ result->mode = a->mode;
+ oidcpy(&result->oid, &a->oid);
} else {
- result.mode = b->mode;
- oidcpy(&result.oid, &b->oid);
+ result->mode = b->mode;
+ oidcpy(&result->oid, &b->oid);
}
} else {
if (!oid_eq(&a->oid, &one->oid) && !oid_eq(&b->oid, &one->oid))
- result.merge = 1;
+ result->merge = 1;
/*
* Merge modes
*/
if (a->mode == b->mode || a->mode == one->mode)
- result.mode = b->mode;
+ result->mode = b->mode;
else {
- result.mode = a->mode;
+ result->mode = a->mode;
if (b->mode != one->mode) {
- result.clean = 0;
- result.merge = 1;
+ result->clean = 0;
+ result->merge = 1;
}
}
if (oid_eq(&a->oid, &b->oid) || oid_eq(&a->oid, &one->oid))
- oidcpy(&result.oid, &b->oid);
+ oidcpy(&result->oid, &b->oid);
else if (oid_eq(&b->oid, &one->oid))
- oidcpy(&result.oid, &a->oid);
+ oidcpy(&result->oid, &a->oid);
else if (S_ISREG(a->mode)) {
mmbuffer_t result_buf;
int merge_status;
@@ -937,64 +937,66 @@ static struct merge_file_info merge_file_1(struct merge_options *o,
die(_("Failed to execute internal merge"));
if (write_sha1_file(result_buf.ptr, result_buf.size,
- blob_type, result.oid.hash))
+ blob_type, result->oid.hash))
die(_("Unable to add %s to database"),
a->path);
free(result_buf.ptr);
- result.clean = (merge_status == 0);
+ result->clean = (merge_status == 0);
} else if (S_ISGITLINK(a->mode)) {
- result.clean = merge_submodule(result.oid.hash,
+ result->clean = merge_submodule(result->oid.hash,
one->path,
one->oid.hash,
a->oid.hash,
b->oid.hash,
!o->call_depth);
} else if (S_ISLNK(a->mode)) {
- oidcpy(&result.oid, &a->oid);
+ oidcpy(&result->oid, &a->oid);
if (!oid_eq(&a->oid, &b->oid))
- result.clean = 0;
+ result->clean = 0;
} else
die("BUG: unsupported object type in the tree");
}
- return result;
+ return 0;
}
-static struct merge_file_info
-merge_file_special_markers(struct merge_options *o,
+static int merge_file_special_markers(struct merge_options *o,
const struct diff_filespec *one,
const struct diff_filespec *a,
const struct diff_filespec *b,
const char *branch1,
const char *filename1,
const char *branch2,
- const char *filename2)
+ const char *filename2,
+ struct merge_file_info *mfi)
{
char *side1 = NULL;
char *side2 = NULL;
- struct merge_file_info mfi;
+ int ret;
if (filename1)
side1 = xstrfmt("%s:%s", branch1, filename1);
if (filename2)
side2 = xstrfmt("%s:%s", branch2, filename2);
- mfi = merge_file_1(o, one, a, b,
- side1 ? side1 : branch1, side2 ? side2 : branch2);
+ ret = merge_file_1(o, one, a, b,
+ side1 ? side1 : branch1,
+ side2 ? side2 : branch2, mfi);
free(side1);
free(side2);
- return mfi;
+ return ret;
}
-static struct merge_file_info merge_file_one(struct merge_options *o,
+static int merge_file_one(struct merge_options *o,
const char *path,
const struct object_id *o_oid, int o_mode,
const struct object_id *a_oid, int a_mode,
const struct object_id *b_oid, int b_mode,
const char *branch1,
- const char *branch2)
+ const char *branch2,
+ struct merge_file_info *mfi)
{
struct diff_filespec one, a, b;
@@ -1005,7 +1007,7 @@ static struct merge_file_info merge_file_one(struct merge_options *o,
a.mode = a_mode;
oidcpy(&b.oid, b_oid);
b.mode = b_mode;
- return merge_file_1(o, &one, &a, &b, branch1, branch2);
+ return merge_file_1(o, &one, &a, &b, branch1, branch2, mfi);
}
static void handle_change_delete(struct merge_options *o,
@@ -1178,11 +1180,12 @@ static void conflict_rename_rename_1to2(struct merge_options *o,
struct merge_file_info mfi;
struct diff_filespec other;
struct diff_filespec *add;
- mfi = merge_file_one(o, one->path,
+ if (merge_file_one(o, one->path,
&one->oid, one->mode,
&a->oid, a->mode,
&b->oid, b->mode,
- ci->branch1, ci->branch2);
+ ci->branch1, ci->branch2, &mfi))
+ return;
/*
* FIXME: For rename/add-source conflicts (if we could detect
* such), this is wrong. We should instead find a unique
@@ -1236,12 +1239,13 @@ static void conflict_rename_rename_2to1(struct merge_options *o,
remove_file(o, 1, a->path, o->call_depth || would_lose_untracked(a->path));
remove_file(o, 1, b->path, o->call_depth || would_lose_untracked(b->path));
- mfi_c1 = merge_file_special_markers(o, a, c1, &ci->ren1_other,
- o->branch1, c1->path,
- o->branch2, ci->ren1_other.path);
- mfi_c2 = merge_file_special_markers(o, b, &ci->ren2_other, c2,
- o->branch1, ci->ren2_other.path,
- o->branch2, c2->path);
+ if (merge_file_special_markers(o, a, c1, &ci->ren1_other,
+ o->branch1, c1->path,
+ o->branch2, ci->ren1_other.path, &mfi_c1) ||
+ merge_file_special_markers(o, b, &ci->ren2_other, c2,
+ o->branch1, ci->ren2_other.path,
+ o->branch2, c2->path, &mfi_c2))
+ return;
if (o->call_depth) {
/*
@@ -1464,12 +1468,13 @@ static int process_renames(struct merge_options *o,
ren1_dst, branch2);
if (o->call_depth) {
struct merge_file_info mfi;
- mfi = merge_file_one(o, ren1_dst, &null_oid, 0,
- &ren1->pair->two->oid,
- ren1->pair->two->mode,
- &dst_other.oid,
- dst_other.mode,
- branch1, branch2);
+ if (merge_file_one(o, ren1_dst, &null_oid, 0,
+ &ren1->pair->two->oid,
+ ren1->pair->two->mode,
+ &dst_other.oid,
+ dst_other.mode,
+ branch1, branch2, &mfi))
+ return -1;
output(o, 1, _("Adding merged %s"), ren1_dst);
update_file(o, 0, &mfi.oid,
mfi.mode, ren1_dst);
@@ -1627,9 +1632,10 @@ static int merge_content(struct merge_options *o,
if (dir_in_way(path, !o->call_depth))
df_conflict_remains = 1;
}
- mfi = merge_file_special_markers(o, &one, &a, &b,
- o->branch1, path1,
- o->branch2, path2);
+ if (merge_file_special_markers(o, &one, &a, &b,
+ o->branch1, path1,
+ o->branch2, path2, &mfi))
+ return -1;
if (mfi.clean && !df_conflict_remains &&
oid_eq(&mfi.oid, a_oid) && mfi.mode == a_mode) {
--
2.9.0.281.g286a8d9
next prev parent reply other threads:[~2016-07-22 12:25 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 ` Johannes Schindelin [this message]
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=6a6b5421c8c95177b96b451abc972745e16585c9.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).