diff options
author | Edward Thomson <ethomson@github.com> | 2016-02-28 21:30:00 -0500 |
---|---|---|
committer | Edward Thomson <ethomson@github.com> | 2016-03-17 11:06:00 -0400 |
commit | d953c4505e09756b4b4f72b431a51867281643ca (patch) | |
tree | 856d273d42eec43a6670fcda7eb38b1a1bc3f90c /src | |
parent | 6d8b2cdbee00f2c4e97796b52e05dd39bd655138 (diff) | |
download | libgit2-d953c4505e09756b4b4f72b431a51867281643ca.tar.gz |
merge drivers: handle configured but not found driver
Diffstat (limited to 'src')
-rw-r--r-- | src/merge.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/merge.c b/src/merge.c index 27c0cea95..a0f2405ff 100644 --- a/src/merge.c +++ b/src/merge.c @@ -891,7 +891,8 @@ static int merge_conflict_resolve_contents( git_index_entry *merge_result; git_odb *odb = NULL; const char *name; - int error = 0; + bool fallback = false; + int error; assert(resolved && diff_list && conflict); @@ -924,12 +925,20 @@ static int merge_conflict_resolve_contents( /* find the merge driver for this file */ if ((error = git_merge_driver_for_source(&name, &driver, &source)) < 0) goto done; + + if (driver == NULL) + fallback = true; } - error = merge_conflict_invoke_driver(&merge_result, name, driver, - diff_list, &source); + if (driver) { + error = merge_conflict_invoke_driver(&merge_result, name, driver, + diff_list, &source); + + if (error == GIT_PASSTHROUGH) + fallback = true; + } - if (error == GIT_PASSTHROUGH) { + if (fallback) { error = merge_conflict_invoke_driver(&merge_result, "text", &git_merge_driver__text.base, diff_list, &source); } |