check_everything_connected: use a struct with named options
[gitweb.git] / diffcore-break.c
index 1d9e530a84758e34d616690684c4842cd1af4cfc..881a74f29e4f6033a2547f2558a5ad8a3eaad584 100644 (file)
@@ -57,8 +57,8 @@ static int should_break(struct diff_filespec *src,
                return 1; /* even their types are different */
        }
 
-       if (src->sha1_valid && dst->sha1_valid &&
-           !hashcmp(src->sha1, dst->sha1))
+       if (src->oid_valid && dst->oid_valid &&
+           !oidcmp(&src->oid, &dst->oid))
                return 0; /* they are the same */
 
        if (diff_populate_filespec(src, 0) || diff_populate_filespec(dst, 0))
@@ -246,6 +246,13 @@ static void merge_broken(struct diff_filepair *p,
 
        dp = diff_queue(outq, d->one, c->two);
        dp->score = p->score;
+       /*
+        * We will be one extra user of the same src side of the
+        * broken pair, if it was used as the rename source for other
+        * paths elsewhere.  Increment to mark that the path stays
+        * in the resulting tree.
+        */
+       d->one->rename_used++;
        diff_free_filespec_data(d->two);
        diff_free_filespec_data(c->one);
        free(d);