mbox series

[v6,0/2] Add mailmap mechanism in cat-file options

Message ID 20221201155504.320461-1-siddharthasthana31@gmail.com (mailing list archive)
Headers show
Series Add mailmap mechanism in cat-file options | expand

Message

Siddharth Asthana Dec. 1, 2022, 3:55 p.m. UTC
Thanks a ton Christian, Ævar and Junio for review :) I have made the
suggested changes in this patch series.

= Description

At present, `git-cat-file` command with `--batch-check` and `-s` options
does not complain when `--use-mailmap` option is given. The latter
option is just ignored. Instead, for commit/tag objects, the command
should compute the size of the object after replacing the idents and
report it. So, this patch series makes `-s` and `--batch-check` options
of `git-cat-file` honor mailmap when used with `--use-mailmap` option.

In this patch series we didn't want to change that '%(objectsize)'
always shows the size of the original object even when `--use-mailmap`
is set because first we have the long term plan to unify how the formats
for `git cat-file` and other commands works. And second existing formats
like the "pretty formats" used by `git log` have different options for
fields respecting mailmap or not respecting it (%an is for author name
while %aN for author name respecting mailmap).

I would like to thank my mentors, Christian Couder and John Cai, for all
of their help!
Looking forward to the reviews!

= Patch Organization

- The first patch makes `-s` option to return updated size of the
  <commit/tag> object, when combined with `--use-mailmap` option, after
  replacing the idents using the mailmap mechanism.
- The second patch makes `--batch-check` option to return updated size of
  the <commit/tag> object, when combined with `--use-mailmap` option,
  after replacing the idents using the mailmap mechanism.

= Changes in v5

- The patch series which improves the documentation for `-s`, `--batch`,
  `--batch-check` and `--batch-command` is again part of this patch
  series with patch 3/3 squashed into patches 1/3 and 2/3 as suggested
  by Junio, Taylor and Christian. The doc patch series was perviously
  sent independently for improving the documentation of git cat-file
  options:
  https://lore.kernel.org/git/20221029092513.73982-1-siddharthasthana31@gmail.com/

- Improve the tests according to run under SHA-256 mode.

= Changes in v6

- Improve the tests so it doesn't break under macOS.

Siddharth Asthana (2):
  cat-file: add mailmap support to -s option
  cat-file: add mailmap support to --batch-check option

 Documentation/git-cat-file.txt | 53 +++++++++++++++++++--------
 builtin/cat-file.c             | 27 ++++++++++++++
 t/t4203-mailmap.sh             | 65 ++++++++++++++++++++++++++++++++++
 3 files changed, 131 insertions(+), 14 deletions(-)

Range-diff against v5:
1:  0db3583535 ! 1:  15366d872e cat-file: add mailmap support to -s option
    @@ t/t4203-mailmap.sh: test_expect_success '--mailmap enables mailmap in cat-file f
     +	cat >.mailmap <<-\EOF &&
     +	C O Mitter <committer@example.com> Orig <orig@example.com>
     +	EOF
    -+	git cat-file commit HEAD | wc -c >expect &&
    -+	git cat-file --use-mailmap commit HEAD | wc -c >>expect &&
    ++	git cat-file commit HEAD >commit.out &&
    ++	echo $(wc -c <commit.out) >expect &&
    ++	git cat-file --use-mailmap commit HEAD >commit.out &&
    ++	echo $(wc -c <commit.out) >>expect &&
     +	git cat-file -s HEAD >actual &&
     +	git cat-file --use-mailmap -s HEAD >>actual &&
     +	test_cmp expect actual
    @@ t/t4203-mailmap.sh: test_expect_success '--mailmap enables mailmap in cat-file f
     +	Orig <orig@example.com> C O Mitter <committer@example.com>
     +	EOF
     +	git tag -a -m "annotated tag" v3 &&
    -+	git cat-file tag v3 | wc -c >expect &&
    -+	git cat-file --use-mailmap tag v3 | wc -c >>expect &&
    ++	git cat-file tag v3 >tag.out &&
    ++	echo $(wc -c <tag.out) >expect &&
    ++	git cat-file --use-mailmap tag v3 >tag.out &&
    ++	echo $(wc -c <tag.out) >>expect &&
     +	git cat-file -s v3 >actual &&
     +	git cat-file --use-mailmap -s v3 >>actual &&
     +	test_cmp expect actual
2:  b8205ede7d ! 2:  86692db720 cat-file: add mailmap support to --batch-check option
    @@ t/t4203-mailmap.sh: test_expect_success 'git cat-file -s returns correct size wi
     +	cat >.mailmap <<-\EOF &&
     +	C O Mitter <committer@example.com> Orig <orig@example.com>
     +	EOF
    -+	commit_size=`git cat-file commit HEAD | wc -c` &&
    -+	commit_sha=`git log --pretty=format:'%H' -n 1` &&
    -+	echo "$commit_sha commit $commit_size" >expect &&
    -+	commit_size=`git cat-file --use-mailmap commit HEAD | wc -c` &&
    -+	echo "$commit_sha commit $commit_size" >>expect &&
    ++	git cat-file commit HEAD >commit.out &&
    ++	commit_size=$(wc -c <commit.out) &&
    ++	commit_sha=$(git rev-parse HEAD) &&
    ++	echo $commit_sha commit $commit_size >expect &&
    ++	git cat-file --use-mailmap commit HEAD >commit.out &&
    ++	commit_size=$(wc -c <commit.out) &&
    ++	echo $commit_sha commit $commit_size >>expect &&
     +	echo "HEAD" >in &&
     +	git cat-file --batch-check <in >actual &&
     +	git cat-file --use-mailmap --batch-check <in >>actual &&
    @@ t/t4203-mailmap.sh: test_expect_success 'git cat-file -s returns correct size wi
     +	cat >.mailmap <<-\EOF &&
     +	C O Mitter <committer@example.com> Orig <orig@example.com>
     +	EOF
    -+	commit_size=`git cat-file commit HEAD | wc -c` &&
    -+	commit_sha=`git log --pretty=format:'%H' -n 1` &&
    -+	echo "$commit_sha commit $commit_size" >expect &&
    -+	commit_size=`git cat-file --use-mailmap commit HEAD | wc -c` &&
    -+	echo "$commit_sha commit $commit_size" >>expect &&
    ++	git cat-file commit HEAD >commit.out &&
    ++	commit_size=$(wc -c <commit.out) &&
    ++	commit_sha=$(git rev-parse HEAD) &&
    ++	echo $commit_sha commit $commit_size >expect &&
    ++	git cat-file --use-mailmap commit HEAD >commit.out &&
    ++	commit_size=$(wc -c <commit.out) &&
    ++	echo $commit_sha commit $commit_size >>expect &&
     +	echo "info HEAD" >in &&
     +	git cat-file --batch-command <in >actual &&
     +	git cat-file --use-mailmap --batch-command <in >>actual &&