+ * When we find a "stage2" entry in the two-way merge, that's
+ * the one that will remain. If we have an exact old match,
+ * we don't care whether the file is up-to-date or not, we just
+ * re-use the thing directly.
+ *
+ * If we didn't have an exact match, then we want to make sure
+ * that we've seen a stage1 that matched the old, and that the
+ * old file was up-to-date. Because it will be gone after this
+ * merge..
+ */
+static void twoway_check(struct cache_entry *old, int seen_stage1, struct cache_entry *ce)
+{
+ if (path_matches(old, ce)) {
+ /*
+ * This also removes the UPDATE flag on
+ * a match
+ */
+ if (same(old, ce)) {
+ *ce = *old;
+ return;
+ }
+ if (!seen_stage1)
+ reject_merge(old);
+ }
+ verify_uptodate(old);
+}
+
+/*