This factors the code that computes the conflict hash and records the preimage into a helper function. Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> --- rerere.c | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-) diff --git a/rerere.c b/rerere.c index 84d0bb7..11fef88 100644 --- a/rerere.c +++ b/rerere.c @@ -229,6 +229,25 @@ static int find_conflict(struct string_list *conflict) return 0; } +static int record_preimage(struct string_list *rr, const char *path, int force) +{ + unsigned char sha1[20]; + char *hex; + int ret; + + ret = handle_file(path, sha1, NULL); + if (ret < 1) + return -1; + + hex = xstrdup(sha1_to_hex(sha1)); + string_list_insert(path, rr)->util = hex; + if (mkdir(git_path("rr-cache/%s", hex), 0755) && !force) + return -1; + + handle_file(path, NULL, rerere_path(hex, "preimage")); + return 0; +} + static int merge(const char *name, const char *path) { int ret; @@ -310,17 +329,8 @@ static int do_plain_rerere(struct string_list *rr, for (i = 0; i < conflict.nr; i++) { const char *path = conflict.items[i].string; if (!string_list_has_string(rr, path)) { - unsigned char sha1[20]; - char *hex; - int ret; - ret = handle_file(path, sha1, NULL); - if (ret < 1) - continue; - hex = xstrdup(sha1_to_hex(sha1)); - string_list_insert(path, rr)->util = hex; - if (mkdir(git_path("rr-cache/%s", hex), 0755)) + if (record_preimage(rr, path, 0)) continue; - handle_file(path, NULL, rerere_path(hex, "preimage")); fprintf(stderr, "Recorded preimage for '%s'\n", path); } } -- 1.6.5.2.182.ge039a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html