Commit Diff


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)