-
Notifications
You must be signed in to change notification settings - Fork 26.2k
rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer #1645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
'--filter=blob:limit=<n>' was introduced in 25ec7bc (list-objects: filter objects in traverse_commit_list, 2017-11-21) and later expanded to bitmaps in 84243da (pack-bitmap: implement BLOB_LIMIT filtering, 2020-02-14) The logic that was introduced in these commits (and that still persists to this day) omits blobs larger than _or equal_ to n bytes or units. However, the documentation (Documentation/rev-list-options.txt) states: >The form '--filter=blob:limit=<n>[kmg]' omits blobs larger than n bytes or units. n may be zero. Moreover, the t6113-rev-list-bitmap-filters.sh tests for exactly this logic, so it seems it is the documentation that needs fixing, not the code. This changes the explanation to be similar to Documentation/git-clone.txt, which is correct. Signed-off-by: Nikolay Edigaryev <[email protected]>
/submit |
Submitted as [email protected] To fetch this version into
To fetch this version to local tag
|
On the Git mailing list, Junio C Hamano wrote (reply to this): "Nikolay Edigaryev via GitGitGadget" <[email protected]>
writes:
> From: Nikolay Edigaryev <[email protected]>
>
> '--filter=blob:limit=<n>' was introduced in 25ec7bcac0 (list-objects:
> filter objects in traverse_commit_list, 2017-11-21) and later expanded
> to bitmaps in 84243da129 (pack-bitmap: implement BLOB_LIMIT filtering,
> 2020-02-14)
>
> The logic that was introduced in these commits (and that still persists
> to this day) omits blobs larger than _or equal_ to n bytes or units.
Good eyes. The former does this
if (object_length < filter_data->max_bytes)
goto include_it;
and the latter does this
if (!bitmap_get(tips, pos) &&
get_size_by_pos(bitmap_git, pos) >= limit)
bitmap_unset(to_filter, pos);
> However, the documentation (Documentation/rev-list-options.txt) states:
>
>>The form '--filter=blob:limit=<n>[kmg]' omits blobs larger than n
> bytes or units. n may be zero.
>
> Moreover, the t6113-rev-list-bitmap-filters.sh tests for exactly this
> logic, so it seems it is the documentation that needs fixing, not the
> code.
Yup. The mechanism is used for things like "we do not want a large
blob, like 100MB", and a byte on the boundary does not matter all
that much in such a countext, but it does not hurt to be more
correct ;-)
> The form '--filter=blob:none' omits all blobs.
> +
> -The form '--filter=blob:limit=<n>[kmg]' omits blobs larger than n bytes
> -or units. n may be zero. The suffixes k, m, and g can be used to name
> -units in KiB, MiB, or GiB. For example, 'blob:limit=1k' is the same
> -as 'blob:limit=1024'.
> +The form '--filter=blob:limit=<n>[kmg]' omits blobs of size at least n
> +bytes or units. n may be zero. The suffixes k, m, and g can be used
> +to name units in KiB, MiB, or GiB. For example, 'blob:limit=1k'
> +is the same as 'blob:limit=1024'.
With unnecessary paragraph wrapping, it is a bit hard to compare the
preimage and the postimage, but I manually checked that this only
does
"larger than" -> "of size at least"
and nothing else, which is expected and in line with what the
proposed commit message claimed to do. Good job.
Will queue. Thanks.
> +
> The form '--filter=object:type=(tag|commit|tree|blob)' omits all objects
> which are not of the requested type.
>
> base-commit: 564d0252ca632e0264ed670534a51d18a689ef5d |
This branch is now known as |
This patch series was integrated into seen via a45d645. |
There was a status update in the "New Topics" section about the branch Docfix. Will merge to 'next'. source: <[email protected]> |
This patch series was integrated into seen via bae6296. |
This patch series was integrated into seen via 3d6510d. |
This patch series was integrated into seen via 101ef5c. |
This patch series was integrated into next via 4f78975. |
There was a status update in the "Cooking" section about the branch Docfix. Will merge to 'master'. source: <[email protected]> |
This patch series was integrated into seen via 1d262b7. |
This patch series was integrated into seen via 531e73d. |
This patch series was integrated into seen via 9d9a662. |
There was a status update in the "Cooking" section about the branch Docfix. Will merge to 'master'. source: <[email protected]> |
This patch series was integrated into seen via cf63945. |
This patch series was integrated into seen via 9c6a09d. |
This patch series was integrated into seen via f3657b3. |
This patch series was integrated into master via f3657b3. |
This patch series was integrated into next via f3657b3. |
Closed via f3657b3. |
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
'--filter=blob:limit=' was introduced in 25ec7bc (list-objects: filter objects in traverse_commit_list, 2017-11-21) and later expanded to bitmaps in 84243da (pack-bitmap: implement BLOB_LIMIT filtering, 2020-02-14)
The logic that was introduced in these commits (and that still persists to this day) omits blobs larger than or equal to n bytes or units.
However, the documentation (Documentation/rev-list-options.txt) states:
Moreover, the t6113-rev-list-bitmap-filters.sh tests for exactly this logic, so it seems it is the documentation that needs fixing, not the code.
This changes the explanation to be similar to
Documentation/git-clone.txt, which is correct.