From: Phillip Wood <phillip.wood123@gmail.com>
To: Siddharth Asthana <siddharthasthana31@gmail.com>, git@vger.kernel.org
Cc: Christian Couder <christian.couder@gmail.com>,
John Cai <johncai86@gmail.com>
Subject: Re: [PATCH 3/3] cat-file: add mailmap support
Date: Thu, 30 Jun 2022 16:50:29 +0100 [thread overview]
Message-ID: <61074b4c-c48f-da89-5d03-b280b9c4fedf@gmail.com> (raw)
In-Reply-To: <20220630142444.651948-4-siddharthasthana31@gmail.com>
Hi Siddharth
On 30/06/2022 15:24, Siddharth Asthana wrote:
> git cat-file is not a plumbing command anymore, especially as it gained
> more and more high level features like its `--batch-command` mode.
cat-file is definitely a plumbing command as it is intended to be used
by scripts. It has a number of features that are used by porcelain
commands but that does not make cat-file itself porcelain.
> So
> tools do use it to get commit and tag contents that are then displayed
> to users. This content which has author, committer or tagger
> information, could benefit from passing through the mailmap mechanism,
> before being sent or displayed.
>
> This patch adds --[no-]use-mailmap command line option to the git
> cat-file command. It also adds --[no-]mailmap option as an alias to
> --[no-]use-mailmap.
I don't think we need an alias for this option, it'll just end up
confusing people.
> At this time, this patch only adds a command line
> option, but perhaps a `cat-file.mailmap` config option could be added as
> well in the same way as for `git log`.
As cat-file is a plumbing command that is used by scripts we should not
add a config option for this as it would potentially break those scripts.
I like the idea of adding mailmap support to cat-file and I think this
patch is definitely going in the right direction.
> +char *replace_idents_using_mailmap(char *object_buf, size_t *size)
> +{
> + struct strbuf sb = STRBUF_INIT;
> + strbuf_attach(&sb, object_buf, *size, *size + 1);
I'm worried by this as I don't think we really own the buffer returned
by read_object_file(). git maintains a cache of objects it has loaded
and if this strbuf grows when the author is rewritten then the pointer
stored in the cache will become invalid. If you look at the code in
revision.c you'll see that commit_rewrite_person() is called on a copy
of the original object.
> + rewrite_ident_line(&sb, "\nauthor ", &mailmap);
> + rewrite_ident_line(&sb, "\ncommitter ", &mailmap);
> + rewrite_ident_line(&sb, "\ntagger ", &mailmap);
> + *size = sb.len;
> + return strbuf_detach(&sb, NULL);
> +}
> [...]
> +test_expect_success '--no-use-mailmap disables mailmap in cat-file' '
> + test_when_finished "rm .mailmap" &&
> + cat >.mailmap <<-EOF &&
> + A U Thor <author@example.com> Orig <orig@example.com>
> + EOF
> + cat >expect <<-EOF &&
> + author Orig <orig@example.com>
> + EOF
> + git cat-file --no-use-mailmap commit HEAD >log &&
> + grep author log >actual &&
> + sed -e "/^author/q" actual >log &&
This line does not have any effect on the contents of log
> + sed -e "s/ [0-9][0-9]* [-+][0-9][0-9][0-9][0-9]$//" log >actual &&
I think you can simplify this series of commands to do
git cat-file ... >log
sed -n "/^author /s/\([^>]*>\).*/\1/p" log >actual
Best Wishes
Phillip
next prev parent reply other threads:[~2022-06-30 15:51 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-30 14:24 [PATCH 0/3] Add support for mailmap in cat-file Siddharth Asthana
2022-06-30 14:24 ` [PATCH 1/3] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-06-30 16:00 ` Đoàn Trần Công Danh
2022-06-30 23:22 ` Junio C Hamano
2022-06-30 14:24 ` [PATCH 2/3] ident: rename commit_rewrite_person() to rewrite_ident_line() Siddharth Asthana
2022-06-30 15:33 ` Phillip Wood
2022-06-30 16:55 ` Christian Couder
2022-06-30 23:31 ` Junio C Hamano
2022-06-30 14:24 ` [PATCH 3/3] cat-file: add mailmap support Siddharth Asthana
2022-06-30 15:50 ` Phillip Wood [this message]
2022-06-30 16:36 ` Phillip Wood
2022-06-30 17:07 ` Christian Couder
2022-06-30 21:33 ` Junio C Hamano
2022-07-07 9:15 ` Christian Couder
2022-06-30 23:36 ` Ævar Arnfjörð Bjarmason
2022-06-30 23:53 ` Junio C Hamano
2022-07-07 9:02 ` Christian Couder
2022-06-30 23:41 ` Junio C Hamano
2022-06-30 21:18 ` [PATCH 0/3] Add support for mailmap in cat-file Junio C Hamano
2022-07-07 16:15 ` [PATCH v2 0/4] " Siddharth Asthana
2022-07-07 16:15 ` [PATCH v2 1/4] revision: improve commit_rewrite_person() Siddharth Asthana
2022-07-07 21:52 ` Junio C Hamano
2022-07-08 14:50 ` Đoàn Trần Công Danh
[not found] ` <CAP8UFD116xMnp27pxW8WNDf6PRJxnnwWtcy2TNHU_KyV2ZVA1g@mail.gmail.com>
2022-07-09 1:02 ` Đoàn Trần Công Danh
2022-07-09 5:04 ` Christian Couder
2022-07-07 16:15 ` [PATCH v2 2/4] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-07-07 16:15 ` [PATCH v2 3/4] ident: rename commit_rewrite_person() to apply_mailmap_to_header() Siddharth Asthana
2022-07-07 16:15 ` [PATCH v2 4/4] cat-file: add mailmap support Siddharth Asthana
2022-07-07 21:55 ` Junio C Hamano
2022-07-08 11:53 ` Johannes Schindelin
2022-07-07 22:06 ` [PATCH v2 0/4] Add support for mailmap in cat-file Junio C Hamano
2022-07-07 22:58 ` Junio C Hamano
2022-07-09 15:41 ` [PATCH v3 " Siddharth Asthana
2022-07-09 15:41 ` [PATCH v3 1/4] revision: improve commit_rewrite_person() Siddharth Asthana
2022-07-12 16:29 ` Johannes Schindelin
2022-07-09 15:41 ` [PATCH v3 2/4] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-07-09 15:41 ` [PATCH v3 3/4] ident: rename commit_rewrite_person() to apply_mailmap_to_header() Siddharth Asthana
2022-07-09 15:41 ` [PATCH v3 4/4] cat-file: add mailmap support Siddharth Asthana
2022-07-10 5:34 ` [PATCH v3 0/4] Add support for mailmap in cat-file Junio C Hamano
2022-07-12 12:34 ` Johannes Schindelin
2022-07-12 14:16 ` Junio C Hamano
2022-07-12 16:01 ` Siddharth Asthana
2022-07-12 16:06 ` Junio C Hamano
2022-07-12 16:06 ` [PATCH v4 " Siddharth Asthana
2022-07-12 16:06 ` [PATCH v4 1/4] revision: improve commit_rewrite_person() Siddharth Asthana
2022-07-13 1:25 ` Ævar Arnfjörð Bjarmason
2022-07-13 12:18 ` Christian Couder
2022-07-14 21:02 ` Junio C Hamano
2022-07-12 16:06 ` [PATCH v4 2/4] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-07-12 16:06 ` [PATCH v4 3/4] ident: rename commit_rewrite_person() to apply_mailmap_to_header() Siddharth Asthana
2022-07-13 1:25 ` Ævar Arnfjörð Bjarmason
2022-07-13 13:29 ` Christian Couder
2022-07-12 16:06 ` [PATCH v4 4/4] cat-file: add mailmap support Siddharth Asthana
2022-07-16 7:40 ` [PATCH v5 0/4] Add support for mailmap in cat-file Siddharth Asthana
2022-07-16 7:40 ` [PATCH v5 1/4] revision: improve commit_rewrite_person() Siddharth Asthana
2022-07-17 22:11 ` Junio C Hamano
2022-07-16 7:40 ` [PATCH v5 2/4] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-07-16 7:40 ` [PATCH v5 3/4] ident: rename commit_rewrite_person() to apply_mailmap_to_header() Siddharth Asthana
2022-07-16 7:40 ` [PATCH v5 4/4] cat-file: add mailmap support Siddharth Asthana
2022-07-18 19:50 ` [PATCH v6 0/4] Add support for mailmap in cat-file Siddharth Asthana
2022-07-18 19:50 ` [PATCH v6 1/4] revision: improve commit_rewrite_person() Siddharth Asthana
2022-07-18 19:51 ` [PATCH v6 2/4] ident: move commit_rewrite_person() to ident.c Siddharth Asthana
2022-07-18 19:51 ` [PATCH v6 3/4] ident: rename commit_rewrite_person() to apply_mailmap_to_header() Siddharth Asthana
2022-07-18 19:51 ` [PATCH v6 4/4] cat-file: add mailmap support Siddharth Asthana
2022-07-25 18:58 ` [PATCH v6 0/4] Add support for mailmap in cat-file Junio C Hamano
2022-07-28 19:07 ` Christian Couder
2022-07-28 19:32 ` Junio C Hamano
2022-07-30 7:50 ` Siddharth Asthana
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=61074b4c-c48f-da89-5d03-b280b9c4fedf@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=johncai86@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
--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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).