From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Siddharth Asthana <siddharthasthana31@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
gitster@pobox.com, johncai86@gmail.com
Subject: Re: [PATCH v2 1/2] cat-file: add mailmap support to -s option
Date: Mon, 26 Sep 2022 15:16:57 +0200 [thread overview]
Message-ID: <220926.86leq61d85.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <20220926105343.233296-2-siddharthasthana31@gmail.com>
On Mon, Sep 26 2022, Siddharth Asthana wrote:
> Even though the cat-file command with `-s` option does not complain when
> `--use-mailmap` option is given, the latter option is ignored. Compute
> the size of the object after replacing the idents and report it instead.
>
> In order to make `-s` option honour the mailmap mechanism we have to
> read the contents of the commit/tag object. Make use of the call to
> `oid_object_info_extended()` to get the contents of the object and store
> in `buf`. `buf` is later freed in the function.
>
> Mentored-by: Christian Couder <christian.couder@gmail.com>
> Mentored-by: John Cai <johncai86@gmail.com>
> Signed-off-by: Siddharth Asthana <siddharthasthana31@gmail.com>
> ---
> Documentation/git-cat-file.txt | 4 +++-
> builtin/cat-file.c | 13 +++++++++++++
> t/t4203-mailmap.sh | 10 ++++++++++
> 3 files changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt
> index ec30b5c574..594b6f2dfd 100644
> --- a/Documentation/git-cat-file.txt
> +++ b/Documentation/git-cat-file.txt
> @@ -45,7 +45,9 @@ OPTIONS
>
> -s::
> Instead of the content, show the object size identified by
> - `<object>`.
> + `<object>`. If used with `--use-mailmap` option, will show the
> + size of updated object after replacing idents using the mailmap
> + mechanism.
>
> -e::
> Exit with zero status if `<object>` exists and is a valid
> diff --git a/builtin/cat-file.c b/builtin/cat-file.c
> index 989eee0bb4..9942b93867 100644
> --- a/builtin/cat-file.c
> +++ b/builtin/cat-file.c
> @@ -132,8 +132,21 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
>
> case 's':
> oi.sizep = &size;
> +
> + if (use_mailmap) {
> + oi.typep = &type;
> + oi.contentp = (void**)&buf;
> + }
> +
> if (oid_object_info_extended(the_repository, &oid, &oi, flags) < 0)
> die("git cat-file: could not get object info");
> +
> + if (use_mailmap && (type == OBJ_COMMIT || type == OBJ_TAG)) {
> + size_t s = size;
> + buf = replace_idents_using_mailmap(buf, &s);
This is partially commentary on your already-landed series for cat-file
--mailmap support. I wondered why we needed this temporary variable, and
why we needed the cast_size_t_to_ulong() at all. On "master" we have a
size, but e.g. for cat_one_file()'s *current* codpaths we just pass it
to write_or_die().
So the net effect is that we refuse to use write_or_die() if the number
in size_t doesn't fit an unsigned long, even though we never need an
unsigned long in that case.
We have *other* things in the object code that need unsigned long, so it
probably amounts to no practical limitation, but it's confusing & I
think per [1] below we could do away with it.
There's also a subtle gotcha on "master", we
replace_idents_using_mailmap() with a possibly NULL "contents", which is
a misuse of the strbuf API (the "buf" member should never be NULL), but
we're about to die anyway...
> + size = cast_size_t_to_ulong(s);
> + }
> +
> printf("%"PRIuMAX"\n", (uintmax_t)size);
...but expanding on "master", here we have seemingly the first use of
cast_size_t_to_ulong() thaht's actually needed in this file. I.e. we are
about to use PRIuMAX.
But why not skip the cast(s) and make this more obvious by having the
printf() argument be cast_size_t_to_ulong(size)?
In your 2/2 you then have another use of cast_size_t_to_ulong() which
*is* needed in that case (we're about to stick it in a "unsigned long"
member, and the "size_t s" temporary variable is also needed in that
case.
1.
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 989eee0bb4c..676c34cba4b 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -178,11 +178,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
if (!buf)
die("Cannot read object %s", obj_name);
- if (use_mailmap) {
- size_t s = size;
- buf = replace_idents_using_mailmap(buf, &s);
- size = cast_size_t_to_ulong(s);
- }
+ if (use_mailmap)
+ buf = replace_idents_using_mailmap(buf, &size);
/* otherwise just spit out the data */
break;
@@ -218,11 +215,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
buf = read_object_with_reference(the_repository, &oid,
exp_type_id, &size, NULL);
- if (use_mailmap) {
- size_t s = size;
- buf = replace_idents_using_mailmap(buf, &s);
- size = cast_size_t_to_ulong(s);
- }
+ if (use_mailmap)
+ buf = replace_idents_using_mailmap(buf, &size);
break;
}
default:
@@ -391,12 +385,8 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
contents = read_object_file(oid, &type, &size);
- if (use_mailmap) {
- size_t s = size;
- contents = replace_idents_using_mailmap(contents, &s);
- size = cast_size_t_to_ulong(s);
- }
-
+ if (use_mailmap)
+ contents = replace_idents_using_mailmap(contents, &size);
if (!contents)
die("object %s disappeared", oid_to_hex(oid));
if (type != data->type)
next prev parent reply other threads:[~2022-09-26 14:55 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-16 20:59 [PATCH 0/3] Add mailmap mechanism in --batch-check options Siddharth Asthana
2022-09-16 20:59 ` [PATCH 1/3] doc/cat-file: allow --use-mailmap for --batch options Siddharth Asthana
2022-09-16 22:02 ` Junio C Hamano
2022-09-16 20:59 ` [PATCH 2/3] cat-file: add mailmap support to -s option Siddharth Asthana
2022-09-16 22:22 ` Junio C Hamano
2022-09-16 20:59 ` [PATCH 3/3] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-09-16 22:35 ` Junio C Hamano
2022-09-26 10:53 ` [PATCH v2 0/2] Add mailmap mechanism in cat-file options Siddharth Asthana
2022-09-26 10:53 ` [PATCH v2 1/2] cat-file: add mailmap support to -s option Siddharth Asthana
2022-09-26 13:16 ` Ævar Arnfjörð Bjarmason [this message]
2022-09-26 13:25 ` Ævar Arnfjörð Bjarmason
2022-09-26 10:53 ` [PATCH v2 2/2] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-10-29 10:24 ` [PATCH v3 0/2] Add mailmap mechanism in cat-file options Siddharth Asthana
2022-10-29 10:24 ` [PATCH v3 1/2] cat-file: add mailmap support to -s option Siddharth Asthana
2022-10-31 11:49 ` Christian Couder
2022-10-29 10:24 ` [PATCH v3 2/2] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-10-31 11:43 ` Christian Couder
2022-10-29 18:00 ` [PATCH v3 0/2] Add mailmap mechanism in cat-file options Taylor Blau
2022-11-13 21:28 ` [PATCH v4 0/3] " Siddharth Asthana
2022-11-13 21:28 ` [PATCH v4 1/3] cat-file: add mailmap support to -s option Siddharth Asthana
2022-11-13 21:28 ` [PATCH v4 2/3] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-11-15 21:40 ` Taylor Blau
2022-11-13 21:28 ` [PATCH v4 3/3] doc/cat-file: allow --use-mailmap for --batch options Siddharth Asthana
2022-11-14 17:48 ` [PATCH v4 0/3] Add mailmap mechanism in cat-file options Christian Couder
2022-11-14 22:30 ` Taylor Blau
2022-11-20 7:42 ` Siddharth Asthana
2022-11-20 7:48 ` [PATCH v5 0/2] " Siddharth Asthana
2022-11-20 7:48 ` [PATCH v5 1/2] cat-file: add mailmap support to -s option Siddharth Asthana
2022-11-21 7:27 ` Junio C Hamano
2022-11-21 9:40 ` Christian Couder
2022-11-21 9:45 ` Junio C Hamano
2022-11-21 11:27 ` Ævar Arnfjörð Bjarmason
2022-11-20 7:48 ` [PATCH v5 2/2] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-11-21 7:38 ` Junio C Hamano
2022-11-30 9:19 ` Junio C Hamano
2022-12-01 15:55 ` [PATCH v6 0/2] Add mailmap mechanism in cat-file options Siddharth Asthana
2022-12-01 15:55 ` [PATCH v6 1/2] cat-file: add mailmap support to -s option Siddharth Asthana
2022-12-01 15:55 ` [PATCH v6 2/2] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-12-14 11:27 ` Ævar Arnfjörð Bjarmason
2022-12-14 14:04 ` Christian Couder
2022-12-20 6:01 ` [PATCH v7 0/2] Add mailmap mechanism in cat-file options Siddharth Asthana
2022-12-20 6:01 ` [PATCH v7 1/2] cat-file: add mailmap support to -s option Siddharth Asthana
2022-12-20 6:01 ` [PATCH v7 2/2] cat-file: add mailmap support to --batch-check option Siddharth Asthana
2022-12-20 13:02 ` [PATCH v7 0/2] Add mailmap mechanism in cat-file options Ævar Arnfjörð Bjarmason
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=220926.86leq61d85.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johncai86@gmail.com \
--cc=siddharthasthana31@gmail.com \
/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.