Merge branch 'dk/blame-keep-origin-blob'
authorJunio C Hamano <gitster@pobox.com>
Thu, 25 Apr 2019 07:41:17 +0000 (16:41 +0900)
committerJunio C Hamano <gitster@pobox.com>
Thu, 25 Apr 2019 07:41:17 +0000 (16:41 +0900)
Performance fix around "git blame", especially in a linear history
(which is the norm we should optimize for).

* dk/blame-keep-origin-blob:
blame.c: don't drop origin blobs as eagerly

blame.c
diff --git a/blame.c b/blame.c
index 5c07dec1903545738642c17e94cc1fa060ba15d3..c11c516921e990e1b0fa752e77a1438e92697d5e 100644 (file)
--- a/blame.c
+++ b/blame.c
@@ -1562,7 +1562,8 @@ static void pass_blame(struct blame_scoreboard *sb, struct blame_origin *origin,
        }
        for (i = 0; i < num_sg; i++) {
                if (sg_origin[i]) {
-                       drop_origin_blob(sg_origin[i]);
+                       if (!sg_origin[i]->suspects)
+                               drop_origin_blob(sg_origin[i]);
                        blame_origin_decref(sg_origin[i]);
                }
        }