From: Junio C Hamano <gitster@pobox.com>
To: Calum McConnell <calumlikesapplepie@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] verify-pack: Fix documentation of --stat-only to reflect behavior
Date: Mon, 09 Dec 2024 09:51:20 +0900 [thread overview]
Message-ID: <xmqq7c89r853.fsf@gitster.g> (raw)
In-Reply-To: <20241208204733.304109-2-calumlikesapplepie@gmail.com> (Calum McConnell's message of "Sun, 8 Dec 2024 15:47:17 -0500")
Calum McConnell <calumlikesapplepie@gmail.com> writes:
> Ever since verify-pack was refactored to use `index-pack.c` in commit
> 3de89c9 (verify-pack: use index-pack --verify, 2011-06-06), the
> --stat-only option has been verifying the full pack, rather than just
> reading the index file, as it was originally documented to do.
>
> Allowing users to get details of packed objects rapidly without
> needing to hash all the objects in packfile is a useful ability.
Thanks for noticing.
> However, implementing that ability would require more changes to index-pack
> than the author is able to do at this time, and so a quick fix to simply
> update the documentation to reflect current behavior is done instead.
Wouldn't it etch the "wrong" behaviour even more strongly into
stone, making future fixes harder, though?
> This commit also re-orders the if-else block, to ensure that if both
> --stat-only and --verbose are specified, the verbose details are provided.
> This fixes another longstanding documentation bug with `verify-pack`.
This part is puzzling. My understanding is that a documentation bug
would be fixed by adjusting the documentation to reality, so a
change to the code would not be involved.
Is this closer to what is happening?
- There are two gotchas that the actual behaviour and the
documentation do not match.
- "--stat-only" being described as "quickly count without
verifying" but doing a lot more than statistics gathering is one.
This is "fixed" by updating the documentation to match the
implemented behaviour.
- "--verbose" is documented to be verbose even when given together
with "--stat-only", but when "--stat-only" is given, it is
ignored. This is "fixed" by updating the behaviour to match the
documentation.
But the thing is, the third point, the second "fix", to allow you to
treat "-v -s" or "-s -v" as if they were "-v" comes from the second
sentence in this paragraph:
-s::
--stat-only::
Do not verify the pack contents; only show the histogram of delta
chain length. With `--verbose`, the list of objects is also shown.
But ...
> -s::
> --stat-only::
> - Do not verify the pack contents; only show the histogram of delta
> - chain length. With `--verbose`, the list of objects is also shown.
> + As --verbose, but only show the histogram of delta
> + chain length.
... this change loses the "list of objects is also shown", which I
think is the justification for passing "--verify-stat" when both are
given.
So, I dunno.
> diff --git a/builtin/verify-pack.c b/builtin/verify-pack.c
> index 34e4ed7..5860a96 100644
> --- a/builtin/verify-pack.c
> +++ b/builtin/verify-pack.c
> @@ -20,10 +20,10 @@ static int verify_one_pack(const char *path, unsigned int flags, const char *has
>
> strvec_push(argv, "index-pack");
>
> - if (stat_only)
> - strvec_push(argv, "--verify-stat-only");
> - else if (verbose)
> + if (verbose)
> strvec_push(argv, "--verify-stat");
> + else if (stat_only)
> + strvec_push(argv, "--verify-stat-only");
> else
> strvec_push(argv, "--verify");
next prev parent reply other threads:[~2024-12-09 0:51 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-08 20:39 BUG: git verify-pack --stat-only is nonfunctional as documented calumlikesapplepie
2024-12-08 20:47 ` [PATCH] verify-pack: Fix documentation of --stat-only to reflect behavior Calum McConnell
2024-12-09 0:51 ` Junio C Hamano [this message]
2024-12-11 6:14 ` BUG: git verify-pack --stat-only is nonfunctional as documented A bughunter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq7c89r853.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=calumlikesapplepie@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.