]> git.neil.brown.name Git - wiggle.git/commitdiff
merge: remove some meaningless AlreadyApplied
authorNeilBrown <neilb@suse.de>
Thu, 14 Feb 2013 05:40:50 +0000 (16:40 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 14 Feb 2013 05:40:50 +0000 (16:40 +1100)
Finding an AlreadyApplied amid Conflicts and Extraneous etc is
unlikely to be helpful.  So don't do it.

Signed-off-by: NeilBrown <neilb@suse.de>
merge2.c

index 9f97c6589b6d86dd340c08f6349b254f479e761b..26ea70eb9b82addca1a66e2bc36a0880191b3265 100644 (file)
--- a/merge2.c
+++ b/merge2.c
@@ -477,6 +477,21 @@ struct ci make_merger(struct file af, struct file bf, struct file cf,
        rv.merger[i].in_conflict = 0;
        rv.merger[i].ignored = 0;
        assert(i < l);
+
+       /* Now revert any AlreadyApplied that aren't bounded by
+        * Unchanged or Changed.
+        */
+       for (i = 0; rv.merger[i].type != End; i++) {
+               if (rv.merger[i].type != AlreadyApplied)
+                       continue;
+               if (i > 0 && rv.merger[i-1].type != Unchanged &&
+                   rv.merger[i-1].type != Changed)
+                       rv.merger[i].type = Conflict;
+               if (rv.merger[i+1].type != Unchanged &&
+                   rv.merger[i+1].type != Changed &&
+                   rv.merger[i+1].type != End)
+                       rv.merger[i].type = Conflict;
+       }
        rv.conflicts = isolate_conflicts(af, bf, cf, csl1, csl2, words,
                                         rv.merger, show_wiggles);
        if (wiggle_found)