summaryrefslogtreecommitdiff
path: root/diffcore-rename.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-05-22 17:04:37 (GMT)
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-22 17:17:50 (GMT)
commit6b14d7faf0bad026a81a27bac07b47691f621b8f (patch)
treeb9d1923aaaea706179e9b27e07a843d277ad1bee /diffcore-rename.c
parent26dee0adfcfa6fc15a522d32765eabbe4f295237 (diff)
downloadgit-6b14d7faf0bad026a81a27bac07b47691f621b8f.zip
git-6b14d7faf0bad026a81a27bac07b47691f621b8f.tar.gz
git-6b14d7faf0bad026a81a27bac07b47691f621b8f.tar.bz2
[PATCH] Diffcore updates.
This moves the path selection logic from individual programs to a new diffcore transformer (diff-tree still needs to have its own for performance reasons). Also the header printing code in diff-tree was tweaked not to produce anything when pickaxe is in effect and there is nothing interesting to report. An interesting example is the following in the GIT archive itself: $ git-whatchanged -p -C -S'or something in a real script' Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'diffcore-rename.c')
-rw-r--r--diffcore-rename.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 8de80df..794e5cc 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -224,8 +224,25 @@ static int needs_to_stay(struct diff_queue_struct *q, int i,
return 0;
}
-void diff_detect_rename(int detect_rename,
- int minimum_score)
+int diff_scoreopt_parse(const char *opt)
+{
+ int diglen, num, scale, i;
+ if (opt[0] != '-' || (opt[1] != 'M' && opt[1] != 'C'))
+ return -1; /* that is not a -M nor -C option */
+ diglen = strspn(opt+2, "0123456789");
+ if (diglen == 0 || strlen(opt+2) != diglen)
+ return 0; /* use default */
+ sscanf(opt+2, "%d", &num);
+ for (i = 0, scale = 1; i < diglen; i++)
+ scale *= 10;
+
+ /* user says num divided by scale and we say internally that
+ * is MAX_SCORE * num / scale.
+ */
+ return MAX_SCORE * num / scale;
+}
+
+void diffcore_rename(int detect_rename, int minimum_score)
{
struct diff_queue_struct *q = &diff_queued_diff;
struct diff_queue_struct outq;