Kristofer Karlsson
93e5b1680e
commit-reach: early exit paint_down_to_common for single merge-base
...
Commits not in the commit-graph get GENERATION_NUMBER_INFINITY and
sort to the top of the priority queue. After those, commits with
finite generation numbers are popped in non-increasing order.
When MERGE_BASE_FIND_ALL is not set the first doubly-painted commit
with a finite generation is therefore a best merge-base: no commit
still in the queue can be a descendant of it. Skip the expensive
STALE drain in this case.
Add MERGE_BASE_FIND_ALL to the merge_base_flags enum. Callers that
need every merge-base (repo_get_merge_bases_many, repo_get_merge_bases,
repo_in_merge_bases_many, remove_redundant_no_gen) pass the flag to
preserve existing behavior. git merge-base (without --all) passes 0,
triggering the early exit.
On a 2.2M-commit merge-heavy monorepo with commit-graph:
HEAD vs ~500: 5,229ms -> 24ms
HEAD vs ~1000: 4,214ms -> 39ms
HEAD vs ~5000: 3,799ms -> 46ms
HEAD vs ~10000: 3,827ms -> 61ms
Signed-off-by: Kristofer Karlsson <krka@spotify.com >
Signed-off-by: Junio C Hamano <gitster@pobox.com >
2026-05-12 09:33:43 +09:00
..
2026-03-24 12:31:32 -07:00
2026-04-01 10:28:18 -07:00
2025-07-01 14:58:24 -07:00
2026-04-07 14:59:28 -07:00
2026-02-23 13:21:19 -08:00
2026-02-20 08:13:58 -08:00
2026-03-18 12:52:29 -07:00
2025-04-15 08:24:35 -07:00
2026-03-31 20:43:14 -07:00
2025-07-23 08:15:18 -07:00
2025-07-23 08:15:22 -07:00
2026-02-20 08:13:58 -08:00
2025-07-23 08:15:22 -07:00
2025-07-23 08:15:22 -07:00
2026-03-24 12:31:32 -07:00
2025-09-29 11:40:35 -07:00
2026-03-05 10:04:49 -08:00
2025-07-23 08:15:18 -07:00
2025-10-22 10:40:11 -07:00
2026-01-15 05:32:31 -08:00
2026-03-24 12:31:32 -07:00
2026-03-26 12:47:17 -07:00
2025-10-16 14:42:39 -07:00
2025-07-23 08:15:20 -07:00
2026-01-12 11:56:56 -08:00
2025-07-23 08:15:22 -07:00
2026-02-23 13:21:18 -08:00
2025-04-15 08:24:35 -07:00
2025-07-23 08:15:18 -07:00
2025-07-23 08:15:18 -07:00
2026-02-13 13:39:25 -08:00
2025-08-09 17:22:01 -07:00
2025-07-01 14:46:38 -07:00
2026-03-26 12:42:57 -07:00
2026-04-07 14:59:27 -07:00
2025-06-04 08:52:25 -07:00
2026-03-31 20:43:14 -07:00
2025-08-11 09:19:40 -07:00
2025-08-22 13:13:20 -07:00
2026-03-03 10:20:00 -08:00
2026-04-08 10:19:17 -07:00
2025-07-23 08:15:22 -07:00
2026-03-25 12:58:05 -07:00
2026-03-12 14:09:07 -07:00
2025-07-23 08:15:22 -07:00
2026-03-23 09:20:30 -07:00
2026-04-06 10:17:36 -07:00
2026-03-25 14:00:48 -07:00
2026-04-08 10:19:17 -07:00
2025-04-24 17:25:34 -07:00
2026-03-27 11:00:02 -07:00
2026-02-13 13:39:25 -08:00
2026-04-03 13:01:08 -07:00
2025-09-08 14:54:35 -07:00
2025-11-04 07:32:25 -08:00
2026-01-09 18:36:18 -08:00
2026-05-12 09:33:43 +09:00
2026-03-27 11:00:01 -07:00
2026-02-06 11:45:33 -08:00
2025-08-08 11:13:12 -07:00
2026-02-13 13:39:25 -08:00
2026-03-12 08:30:57 -07:00
2026-03-23 08:33:10 -07:00
2026-03-12 10:03:23 -07:00
2026-03-25 12:58:05 -07:00
2026-02-26 07:22:51 -08:00
2026-03-18 10:39:56 -07:00
2025-08-21 13:47:00 -07:00
2026-04-06 15:42:49 -07:00
2026-02-21 21:26:53 -08:00
2025-09-19 10:02:55 -07:00
2026-01-09 06:07:21 -08:00
2025-08-05 11:53:55 -07:00
2026-03-12 08:30:57 -07:00
2026-02-26 07:22:53 -08:00
2025-10-14 12:56:09 -07:00
2026-01-09 18:36:18 -08:00
2026-03-24 12:26:58 -07:00
2026-04-09 11:21:59 -07:00
2025-10-15 10:29:28 -07:00
2026-03-23 08:33:10 -07:00
2026-03-31 20:43:14 -07:00
2026-03-27 13:40:40 -07:00
2025-11-04 07:32:24 -08:00
2026-04-01 21:34:25 -07:00
2026-03-25 10:35:27 -07:00
2025-07-23 08:15:18 -07:00
2026-03-03 15:09:36 -08:00
2026-04-06 12:02:30 -07:00
2026-03-26 12:47:17 -07:00
2025-09-18 10:07:00 -07:00
2025-07-23 08:15:22 -07:00
2025-07-23 08:15:22 -07:00
2026-02-20 08:13:58 -08:00
2026-01-15 05:32:31 -08:00
2026-01-30 08:58:12 -08:00
2026-03-31 20:43:14 -07:00
2026-03-05 10:04:49 -08:00
2026-03-30 08:19:40 -07:00
2025-07-23 08:15:18 -07:00
2026-03-25 12:58:05 -07:00
2025-07-23 08:15:22 -07:00
2026-03-24 12:31:31 -07:00
2025-07-23 08:15:22 -07:00
2026-04-08 10:19:17 -07:00
2025-09-16 11:37:06 -07:00
2026-01-25 22:27:33 -08:00
2025-07-23 08:15:22 -07:00
2025-11-19 17:41:03 -08:00
2025-11-19 17:41:03 -08:00
2025-08-21 13:46:59 -07:00
2025-07-23 08:15:22 -07:00
2025-07-23 08:15:22 -07:00
2025-12-29 22:02:53 +09:00
2026-04-03 13:01:09 -07:00
2025-07-23 08:15:22 -07:00