{"thread":{"id":"11113","subject":"[PATCH 2/2] Add flag to make unpack_trees() not print errors.","startedAt":"2007-12-03T05:32:45Z","lastAt":"2007-12-03T05:32:45Z","messageCount":1,"participants":["Daniel Barkalow"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"61727","messageId":"Pine.LNX.4.64.0712030028120.5349@iabervon.org","threadId":"11113","inReplyTo":null,"subject":"[PATCH 2/2] Add flag to make unpack_trees() not print errors.","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2007-12-03T05:32:45Z","receivedAt":"2007-12-03T05:32:45Z","isPatch":true,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"This will allow builtin-checkout to suppress merge errors if it's\ngoing to try more merging methods.\n\nSigned-off-by: Daniel Barkalow <barkalow@iabervon.org>\n---\n unpack-trees.c |   29 +++++++++++++++++------------\n unpack-trees.h |    1 +\n 2 files changed, 18 insertions(+), 12 deletions(-)\n\ndiff --git a/unpack-trees.c b/unpack-trees.c\nindex 0958166..a423197 100644\n--- a/unpack-trees.c\n+++ b/unpack-trees.c\n@@ -362,7 +362,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options\n \t}\n \n \tif (o->trivial_merges_only && o->nontrivial_merge)\n-\t\treturn error(\"Merge requires file-level merging\");\n+\t\treturn o->gently ? -1 : \n+\t\t\terror(\"Merge requires file-level merging\");\n \n \tcheck_updates(active_cache, active_nr, o);\n \treturn 0;\n@@ -416,7 +417,8 @@ static int verify_uptodate(struct cache_entry *ce,\n \t}\n \tif (errno == ENOENT)\n \t\treturn 0;\n-\treturn error(\"Entry '%s' not uptodate. Cannot merge.\", ce->name);\n+\treturn o->gently ? -1 : \n+\t\terror(\"Entry '%s' not uptodate. Cannot merge.\", ce->name);\n }\n \n static void invalidate_ce_path(struct cache_entry *ce)\n@@ -502,8 +504,9 @@ static int verify_clean_subdirectory(struct cache_entry *ce, const char *action,\n \t\td.exclude_per_dir = o->dir->exclude_per_dir;\n \ti = read_directory(&d, ce->name, pathbuf, namelen+1, NULL);\n \tif (i)\n-\t\treturn error(\"Updating '%s' would lose untracked files in it\",\n-\t\t\t     ce->name);\n+\t\treturn o->gently ? -1 :\n+\t\t\terror(\"Updating '%s' would lose untracked files in it\",\n+\t\t\t      ce->name);\n \tfree(pathbuf);\n \treturn cnt;\n }\n@@ -575,8 +578,9 @@ static int verify_absent(struct cache_entry *ce, const char *action,\n \t\t\t\treturn 0;\n \t\t}\n \n-\t\treturn error(\"Untracked working tree file '%s' \"\n-\t\t\t     \"would be %s by merge.\", ce->name, action);\n+\t\treturn o->gently ? -1 : \n+\t\t\terror(\"Untracked working tree file '%s' \"\n+\t\t\t      \"would be %s by merge.\", ce->name, action);\n \t}\n \treturn 0;\n }\n@@ -708,7 +712,7 @@ int threeway_merge(struct cache_entry **stages,\n \t/* #14, #14ALT, #2ALT */\n \tif (remote && !df_conflict_head && head_match && !remote_match) {\n \t\tif (index && !same(index, remote) && !same(index, head))\n-\t\t\treturn reject_merge(index);\n+\t\t\treturn o->gently ? -1 : reject_merge(index);\n \t\treturn merged_entry(remote, index, o);\n \t}\n \t/*\n@@ -716,7 +720,7 @@ int threeway_merge(struct cache_entry **stages,\n \t * make sure that it matches head.\n \t */\n \tif (index && !same(index, head)) {\n-\t\treturn reject_merge(index);\n+\t\treturn o->gently ? -1 : reject_merge(index);\n \t}\n \n \tif (head) {\n@@ -867,11 +871,11 @@ int twoway_merge(struct cache_entry **src,\n \t\t\t/* all other failures */\n \t\t\tremove_entry(remove);\n \t\t\tif (oldtree)\n-\t\t\t\treturn reject_merge(oldtree);\n+\t\t\t\treturn o->gently ? -1 : reject_merge(oldtree);\n \t\t\tif (current)\n-\t\t\t\treturn reject_merge(current);\n+\t\t\t\treturn o->gently ? -1 : reject_merge(current);\n \t\t\tif (newtree)\n-\t\t\t\treturn reject_merge(newtree);\n+\t\t\t\treturn o->gently ? -1 : reject_merge(newtree);\n \t\t\treturn -1;\n \t\t}\n \t}\n@@ -898,7 +902,8 @@ int bind_merge(struct cache_entry **src,\n \t\treturn error(\"Cannot do a bind merge of %d trees\\n\",\n \t\t\t     o->merge_size);\n \tif (a && old)\n-\t\treturn error(\"Entry '%s' overlaps.  Cannot bind.\", a->name);\n+\t\treturn o->gently ? -1 : \n+\t\t\terror(\"Entry '%s' overlaps.  Cannot bind.\", a->name);\n \tif (!a)\n \t\treturn keep_entry(old, o);\n \telse\ndiff --git a/unpack-trees.h b/unpack-trees.h\nindex 5517faa..619950d 100644\n--- a/unpack-trees.h\n+++ b/unpack-trees.h\n@@ -16,6 +16,7 @@ struct unpack_trees_options {\n \tint trivial_merges_only;\n \tint verbose_update;\n \tint aggressive;\n+\tint gently;\n \tconst char *prefix;\n \tint pos;\n \tstruct dir_struct *dir;\n-- \n1.5.3.6.886.gb204\n"}]}