From 4af00678ca4aac6f26f61cae89718450654ec189 Mon Sep 17 00:00:00 2001 From: Squibid Date: Sat, 21 Dec 2024 21:36:54 -0500 Subject: optimize... make the stage check faster by filtering the status list --- XD.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'XD.c') diff --git a/XD.c b/XD.c index c44fe3f..aa3d43d 100644 --- a/XD.c +++ b/XD.c @@ -188,9 +188,13 @@ has_staged(git_repository *repo) { git_status_entry entry; git_status_list *list = NULL; + git_status_options opts = GIT_STATUS_OPTIONS_INIT; int i, c, r = 0; - if (git_status_list_new(&list, repo, NULL) < 0) { + opts.flags = GIT_STATUS_INDEX_NEW; + opts.show = GIT_STATUS_SHOW_INDEX_ONLY; + + if (git_status_list_new(&list, repo, &opts) < 0) { L("Error checking for staged changes: %s", git_error_last()->message); return 0; } @@ -200,9 +204,9 @@ has_staged(git_repository *repo) for (i = 0; i < c; i++) { entry = *git_status_byindex(list, i); - if (entry.status & GIT_STATUS_INDEX_NEW - || entry.status & GIT_STATUS_INDEX_DELETED - || entry.status & GIT_STATUS_INDEX_MODIFIED) { + if (entry.status & (GIT_STATUS_INDEX_NEW + | GIT_STATUS_INDEX_DELETED + | GIT_STATUS_INDEX_MODIFIED)) { r = 1; break; } -- cgit v1.2.1