All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] diffcore-rename: don't change similarity index based on basename equality
@ 2007-06-24 22:23 René Scharfe
  0 siblings, 0 replies; only message in thread
From: René Scharfe @ 2007-06-24 22:23 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Schindelin, Git Mailing List, David Kastrup

This implements a suggestion from Johannes.  It uses a separate field in
struct diff_score to keep the result of the file name comparison in the
rename detection logic.  This reverts the value of the similarity index
to be a function of file contents, only, and basename comparison is only
used to decide between files with equal amounts of content changes.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---

 diffcore-rename.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/diffcore-rename.c b/diffcore-rename.c
index 79c984c..e0a89f3 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -138,6 +138,7 @@ struct diff_score {
 	int src; /* index in rename_src */
 	int dst; /* index in rename_dst */
 	int score;
+	int name_score;
 };
 
 static int estimate_similarity(struct diff_filespec *src,
@@ -201,11 +202,8 @@ static int estimate_similarity(struct diff_filespec *src,
 	 */
 	if (!dst->size)
 		score = 0; /* should not happen */
-	else {
+	else
 		score = (int)(src_copied * MAX_SCORE / max_size);
-		if (basename_same(src, dst))
-			score++;
-	}
 	return score;
 }
 
@@ -242,6 +240,10 @@ static void record_rename_pair(int dst_index, int src_index, int score)
 static int score_compare(const void *a_, const void *b_)
 {
 	const struct diff_score *a = a_, *b = b_;
+
+	if (a->score == b->score)
+		return b->name_score - a->name_score;
+
 	return b->score - a->score;
 }
 
@@ -360,6 +362,7 @@ void diffcore_rename(struct diff_options *options)
 			m->dst = i;
 			m->score = estimate_similarity(one, two,
 						       minimum_score);
+			m->name_score = basename_same(one, two);
 			diff_free_filespec_data(one);
 		}
 		/* We do not need the text anymore */

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-06-24 22:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-24 22:23 [PATCH] diffcore-rename: don't change similarity index based on basename equality René Scharfe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.