commit 615e455c6bdddbd4e59d5d0dece41eb9953b6336 from: Omar Polo date: Wed Jul 27 07:25:05 2022 UTC simplify got_patch/apply_patch to call reverse_patch in one place once Current code is overly complex; it looks if the diff *might* use diff3 merge to postpone reverse_patch until we know for sure. Instead, just reverse_patch in apply_patch once we know if merge *is* used or not. commit - 0543436dc194839e6e3ffa7cecc87f4774eb0350 commit + 615e455c6bdddbd4e59d5d0dece41eb9953b6336 blob - ab334cf0239cc3dcf0653836d82b513a55e0f1b6 blob + 57e6ce78b6ed68c545f6e3c07cca28d1833f1df6 --- lib/patch.c +++ lib/patch.c @@ -758,11 +758,12 @@ apply_patch(int *overlapcnt, struct got_worktree *work return err; else if (err == NULL) do_merge = 1; - else if (reverse) - reverse_patch(p); err = NULL; } + if (reverse && !do_merge) + reverse_patch(p); + if (asprintf(&oldpath, "%s/%s", got_worktree_get_root_path(worktree), old) == -1) { err = got_error_from_errno("asprintf"); @@ -1018,10 +1019,6 @@ got_patch(int fd, struct got_worktree *worktree, struc if (err || done) break; - /* reversal application with merge base is done differently */ - if (reverse && *p.blob == '\0') - reverse_patch(&p); - err = got_worktree_patch_check_path(p.old, p.new, &oldpath, &newpath, worktree, repo, fileindex); if (err == NULL)