Phillip Wood [off-list ref] writes:
Hello Phillip,
Hi Karthik
On 01/07/2025 16:03, Karthik Nayak wrote:
quoted
This enables efficient pagination workflows like:
git for-each-ref --count=100
git for-each-ref --count=100 --skip-until=refs/heads/branch-100
git for-each-ref --count=100 --skip-until=refs/heads/branch-200
Doesn't that require you to know the name of the ref after the last one
returned by the previous batch? If the use case here is pagination then
being able to provide a numeric offset might be a better fit. For example
It does require that you know the last ref from the previous batch.
The reason for picking a reference offset is mostly for performance
optimization. Our reference backends are built with prefix matching in
mind, in short they do a binary search through the reference namespace
to find the required prefix. By using a reference offset we can utilize
this binary search mechanism to arrive at offset.
Using a count offset would require iteration to reach the desired
offset (basically a O(N) operation). This wouldn't really matter in
repositories with ~10^3 refs, but in larger repositories with around
~10^6 refs this starts to make a large difference.
git for-each-ref --count=100 --start=200
would show refs 200 to 300
Thanks
Phillip