For repositories with a large number of tags, the call to all_from_path can take a significant amount of time, because it gets all tags, then checks to see if all of them are contained_in_current_branch?.
Here's an example of a repository with 234 tags that all match the version format regex. Before these changes, the checks to contained_in_current_branch? took ~10 seconds:
After these changes, the lookup took 0.05 seconds, because it only had to call contained_in_current_branch? once:
I don't have enough knowledge of p4 to implement a similar change in P4Version, so I just have it calling all_from_path(path).first for now.
For repositories with a large number of tags, the call to
all_from_path
can take a significant amount of time, because it gets all tags, then checks to see if all of them arecontained_in_current_branch?
.Here's an example of a repository with 234 tags that all match the version format regex. Before these changes, the checks to
contained_in_current_branch?
took ~10 seconds:After these changes, the lookup took 0.05 seconds, because it only had to call
contained_in_current_branch?
once:I don't have enough knowledge of p4 to implement a similar change in
P4Version
, so I just have it callingall_from_path(path).first
for now.