From d551a488169aeb2ac09dba781f2ffbecf3425996 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Sun, 8 Feb 2009 15:34:27 +0100 Subject: Add mailmap.file as configurational option for mailmap location This allows us to augment the repo mailmap file, and to use mailmap files elsewhere than the repository root. Meaning that the entries in mailmap.file will override the entries in "./.mailmap", should they match. Signed-off-by: Marius Storm-Olsen Signed-off-by: Junio C Hamano --- t/t4203-mailmap.sh | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100755 t/t4203-mailmap.sh (limited to 't') diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh new file mode 100755 index 0000000000..fc50ac22e3 --- /dev/null +++ b/t/t4203-mailmap.sh @@ -0,0 +1,109 @@ +#!/bin/sh + +test_description='.mailmap configurations' + +. ./test-lib.sh + +test_expect_success setup ' + echo one >one && + git add one && + test_tick && + git commit -m initial && + echo two >>one && + git add one && + git commit --author "nick1 " -m second +' + +cat >expect <<\EOF +A U Thor (1): + initial + +nick1 (1): + second + +EOF + +test_expect_success 'No mailmap' ' + git shortlog HEAD >actual && + test_cmp expect actual +' + +cat >expect <<\EOF +Repo Guy (1): + initial + +nick1 (1): + second + +EOF + +test_expect_success 'default .mailmap' ' + echo "Repo Guy " > .mailmap && + git shortlog HEAD >actual && + test_cmp expect actual +' + +# Using a mailmap file in a subdirectory of the repo here, but +# could just as well have been a file outside of the repository +cat >expect <<\EOF +Internal Guy (1): + second + +Repo Guy (1): + initial + +EOF +test_expect_success 'mailmap.file set' ' + mkdir internal_mailmap && + echo "Internal Guy " > internal_mailmap/.mailmap && + git config mailmap.file internal_mailmap/.mailmap && + git shortlog HEAD >actual && + test_cmp expect actual +' + +cat >expect <<\EOF +External Guy (1): + initial + +Internal Guy (1): + second + +EOF +test_expect_success 'mailmap.file override' ' + echo "External Guy " >> internal_mailmap/.mailmap && + git config mailmap.file internal_mailmap/.mailmap && + git shortlog HEAD >actual && + test_cmp expect actual +' + +cat >expect <<\EOF +Repo Guy (1): + initial + +nick1 (1): + second + +EOF + +test_expect_success 'mailmap.file non-existant' ' + rm internal_mailmap/.mailmap && + rmdir internal_mailmap && + git shortlog HEAD >actual && + test_cmp expect actual +' + +cat >expect <<\EOF +A U Thor (1): + initial + +nick1 (1): + second + +EOF +test_expect_success 'No mailmap files, but configured' ' + rm .mailmap && + git shortlog HEAD >actual && + test_cmp expect actual +' + +test_done -- cgit v1.2.3 From d20d654fe8923a502527547b17fe284d15d6aec9 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Sun, 8 Feb 2009 15:34:30 +0100 Subject: Change current mailmap usage to do matching on both name and email of author/committer. Signed-off-by: Marius Storm-Olsen Signed-off-by: Junio C Hamano --- t/t4203-mailmap.sh | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) (limited to 't') diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh index fc50ac22e3..9a7d1b4466 100755 --- a/t/t4203-mailmap.sh +++ b/t/t4203-mailmap.sh @@ -106,4 +106,110 @@ test_expect_success 'No mailmap files, but configured' ' test_cmp expect actual ' +# Extended mailmap configurations should give us the following output for shortlog +cat >expect <<\EOF +A U Thor (1): + initial + +CTO (1): + seventh + +Other Author (2): + third + fourth + +Santa Claus (2): + fifth + sixth + +Some Dude (1): + second + +EOF + +test_expect_success 'Shortlog output (complex mapping)' ' + echo three >>one && + git add one && + test_tick && + git commit --author "nick2 " -m third && + + echo four >>one && + git add one && + test_tick && + git commit --author "nick2 " -m fourth && + + echo five >>one && + git add one && + test_tick && + git commit --author "santa " -m fifth && + + echo six >>one && + git add one && + test_tick && + git commit --author "claus " -m sixth && + + echo seven >>one && + git add one && + test_tick && + git commit --author "CTO " -m seventh && + + mkdir internal_mailmap && + echo "Committed " > internal_mailmap/.mailmap && + echo " " >> internal_mailmap/.mailmap && + echo "Some Dude nick1 " >> internal_mailmap/.mailmap && + echo "Other Author nick2 " >> internal_mailmap/.mailmap && + echo "Other Author " >> internal_mailmap/.mailmap && + echo "Santa Claus " >> internal_mailmap/.mailmap && + echo "Santa Claus " >> internal_mailmap/.mailmap && + + git shortlog -e HEAD >actual && + test_cmp expect actual + +' + +# git log with --pretty format which uses the name and email mailmap placemarkers +cat >expect <<\EOF +Author CTO maps to CTO +Committer C O Mitter maps to Committed + +Author claus maps to Santa Claus +Committer C O Mitter maps to Committed + +Author santa maps to Santa Claus +Committer C O Mitter maps to Committed + +Author nick2 maps to Other Author +Committer C O Mitter maps to Committed + +Author nick2 maps to Other Author +Committer C O Mitter maps to Committed + +Author nick1 maps to Some Dude +Committer C O Mitter maps to Committed + +Author A U Thor maps to A U Thor +Committer C O Mitter maps to Committed +EOF + +test_expect_success 'Log output (complex mapping)' ' + git log --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual && + test_cmp expect actual +' + +# git blame +cat >expect <<\EOF +^3a2fdcb (A U Thor 2005-04-07 15:13:13 -0700 1) one +7de6f99b (Some Dude 2005-04-07 15:13:13 -0700 2) two +5815879d (Other Author 2005-04-07 15:14:13 -0700 3) three +ff859d96 (Other Author 2005-04-07 15:15:13 -0700 4) four +5ab6d4fa (Santa Claus 2005-04-07 15:16:13 -0700 5) five +38a42d8b (Santa Claus 2005-04-07 15:17:13 -0700 6) six +8ddc0386 (CTO 2005-04-07 15:18:13 -0700 7) seven +EOF + +test_expect_success 'Blame output (complex mapping)' ' + git blame one >actual && + test_cmp expect actual +' + test_done -- cgit v1.2.3