Re: [PATCH v3] rev-list: exclude promisor objects at walk time
- Date: Wed, 10 Apr 2019 00:14:41 +0900
- From: Junio C Hamano <gitster@xxxxxxxxx>
- Subject: Re: [PATCH v3] rev-list: exclude promisor objects at walk time
Josh Steadmon <steadmon@xxxxxxxxxx> writes:
> For large repositories, enumerating the list of all promisor objects (in
> order to exclude them from a rev-list walk) can take a significant
> amount of time).
>
> When --exclude-promisor-objects is passed to rev-list, don't enumerate
> the promisor objects. Instead, filter them (and any children objects)
> during the actual graph walk.
>
> Remove the mark_uninteresting() function as it's not used anywhere else.
>
> When testing against a large repo [1], this patch reduces the
> connectivity check runtime from 3 minutes to ~7 seconds.
>
> [1]: https://android.googlesource.com/platform/frameworks/base/
>
> Helped-By: Jonathan Tan <jonathantanmy@xxxxxxxxxx>
> Helped-By: Jeff King <peff@xxxxxxxx>
> Helped-By: Jonathan Nieder <jrnieder@xxxxxxxxx>
> Signed-off-by: Josh Steadmon <steadmon@xxxxxxxxxx>
>
> Signed-off-by: Josh Steadmon <steadmon@xxxxxxxxxx>
I've dealt with the stray double-sign-off locally, but is there
anything else planned for v4 or later? Is this performance-only
change, or does it have an externally observable behaviour change
that we can easily add to our test suite?
> list-objects.c | 20 ++++++++++++++++++++
> revision.c | 16 ----------------
> 2 files changed, 20 insertions(+), 16 deletions(-)