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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).