X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=rerere.c;h=861ca7c815b4857f1fde399617860e5a179e2ca3;hb=1d50bfd9c7ae6a0bc7d60b34162c56c670db540d;hp=d03a69634b81e1146c20182670a400b0c29b275f;hpb=c01a29c74ff991faf3012882fbf676b182b8893f;p=thirdparty%2Fgit.git diff --git a/rerere.c b/rerere.c index d03a69634b..861ca7c815 100644 --- a/rerere.c +++ b/rerere.c @@ -319,6 +319,10 @@ static int handle_cache(const char *path, unsigned char *sha1, const char *outpu if (!mmfile[i].ptr && !mmfile[i].size) mmfile[i].ptr = xstrdup(""); } + /* + * NEEDSWORK: handle conflicts from merges with + * merge.renormalize set, too + */ ll_merge(&result, path, &mmfile[0], NULL, &mmfile[1], "ours", &mmfile[2], "theirs", 0); @@ -378,7 +382,13 @@ static int merge(const char *name, const char *path) } ret = ll_merge(&result, path, &base, NULL, &cur, "", &other, "", 0); if (!ret) { - FILE *f = fopen(path, "w"); + FILE *f; + + if (utime(rerere_path(name, "postimage"), NULL) < 0) + warning("failed utime() on %s: %s", + rerere_path(name, "postimage"), + strerror(errno)); + f = fopen(path, "w"); if (!f) return error("Could not open %s: %s", path, strerror(errno)); @@ -426,8 +436,8 @@ static int update_paths(struct string_list *update) static int do_plain_rerere(struct string_list *rr, int fd) { - struct string_list conflict = { NULL, 0, 0, 1 }; - struct string_list update = { NULL, 0, 0, 1 }; + struct string_list conflict = STRING_LIST_INIT_DUP; + struct string_list update = STRING_LIST_INIT_DUP; int i; find_conflict(&conflict); @@ -547,7 +557,7 @@ int setup_rerere(struct string_list *merge_rr, int flags) int rerere(int flags) { - struct string_list merge_rr = { NULL, 0, 0, 1 }; + struct string_list merge_rr = STRING_LIST_INIT_DUP; int fd; fd = setup_rerere(&merge_rr, flags); @@ -585,8 +595,8 @@ static int rerere_forget_one_path(const char *path, struct string_list *rr) int rerere_forget(const char **pathspec) { int i, fd; - struct string_list conflict = { NULL, 0, 0, 1 }; - struct string_list merge_rr = { NULL, 0, 0, 1 }; + struct string_list conflict = STRING_LIST_INIT_DUP; + struct string_list merge_rr = STRING_LIST_INIT_DUP; if (read_cache() < 0) return error("Could not read index");