]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reset: reorder wildcard pathspec conditions
authorVictoria Dye <vdye@github.com>
Tue, 11 Jan 2022 18:04:59 +0000 (18:04 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 13 Jan 2022 21:49:44 +0000 (13:49 -0800)
Rearrange conditions in method determining whether index expansion is
necessary when a pathspec is specified for `git reset`, placing less
expensive condition first. Additionally, add details & examples to related
code comments to help with readability.

Helped-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Victoria Dye <vdye@github.com>
Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/reset.c

index b1ff699b43a33b6ddb3301c5fbf6a7dd314b0f6a..79b40385b9920240778afa3ad663944043af05e1 100644 (file)
@@ -204,10 +204,16 @@ static int pathspec_needs_expanded_index(const struct pathspec *pathspec)
                        /*
                         * Special case: if the pattern is a path inside the cone
                         * followed by only wildcards, the pattern cannot match
-                        * partial sparse directories, so we don't expand the index.
+                        * partial sparse directories, so we know we don't need to
+                        * expand the index.
+                        *
+                        * Examples:
+                        * - in-cone/foo***: doesn't need expanded index
+                        * - not-in-cone/bar*: may need expanded index
+                        * - **.c: may need expanded index
                         */
-                       if (path_in_cone_mode_sparse_checkout(item.original, &the_index) &&
-                           strspn(item.original + item.nowildcard_len, "*") == item.len - item.nowildcard_len)
+                       if (strspn(item.original + item.nowildcard_len, "*") == item.len - item.nowildcard_len &&
+                           path_in_cone_mode_sparse_checkout(item.original, &the_index))
                                continue;
 
                        for (pos = 0; pos < active_nr; pos++) {