From: Karthik Nayak Date: Wed, 02 Jul 2025 20:33:47 GMT Subject: Re: [PATCH 0/4] for-each-ref: introduce seeking functionality via '--skip-until' Message-ID: In-Reply-To: <5e9b3ef1-931b-4b70-8275-5aed5da3d6f3@gmail.com> Phillip Wood writes: Hello Phillip, > Hi Karthik > > On 01/07/2025 16:03, Karthik Nayak wrote: >> >> 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