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@xxxxxxxxx/ - 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@xxxxxxxxxxx> Orig <orig@xxxxxxxxxxx> + 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@xxxxxxxxxxx> C O Mitter <committer@xxxxxxxxxxx> + 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@xxxxxxxxxxx> Orig <orig@xxxxxxxxxxx> + 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@xxxxxxxxxxx> Orig <orig@xxxxxxxxxxx> + 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 && -- 2.39.0.rc1.6.g86692db720