Browse Source

Merge branch 'jm/mailmap' into maint

* jm/mailmap:
  t4203: do not let "git shortlog" DWIM based on tty
  t4203 (mailmap): stop hardcoding commit ids and dates
  mailmap: fix use of freed memory
maint
Junio C Hamano 14 years ago
parent
commit
a33fb40fe4
  1. 8
      mailmap.c
  2. 67
      t/t4203-mailmap.sh

8
mailmap.c

@ -79,12 +79,14 @@ static void add_mapping(struct string_list *map, @@ -79,12 +79,14 @@ static void add_mapping(struct string_list *map,
if (old_name == NULL) {
debug_mm("mailmap: adding (simple) entry for %s at index %d\n", old_email, index);
/* Replace current name and new email for simple entry */
if (new_name) {
free(me->name);
free(me->email);
if (new_name)
me->name = xstrdup(new_name);
if (new_email)
}
if (new_email) {
free(me->email);
me->email = xstrdup(new_email);
}
} else {
struct mailmap_info *mi = xmalloc(sizeof(struct mailmap_info));
debug_mm("mailmap: adding (complex) entry for %s at index %d\n", old_email, index);

67
t/t4203-mailmap.sh

@ -4,6 +4,14 @@ test_description='.mailmap configurations' @@ -4,6 +4,14 @@ test_description='.mailmap configurations'

. ./test-lib.sh

fuzz_blame () {
sed "
s/$_x05[0-9a-f][0-9a-f][0-9a-f]/OBJID/g
s/$_x05[0-9a-f][0-9a-f]/OBJI/g
s/[-0-9]\{10\} [:0-9]\{8\} [-+][0-9]\{4\}/DATE/g
" "$@"
}

test_expect_success setup '
echo one >one &&
git add one &&
@ -11,6 +19,7 @@ test_expect_success setup ' @@ -11,6 +19,7 @@ test_expect_success setup '
git commit -m initial &&
echo two >>one &&
git add one &&
test_tick &&
git commit --author "nick1 <bugs@company.xx>" -m second
'

@ -54,7 +63,7 @@ Repo Guy (1): @@ -54,7 +63,7 @@ Repo Guy (1):

EOF
test_expect_success 'mailmap.file set' '
mkdir internal_mailmap &&
mkdir -p internal_mailmap &&
echo "Internal Guy <bugs@company.xx>" > internal_mailmap/.mailmap &&
git config mailmap.file internal_mailmap/.mailmap &&
git shortlog HEAD >actual &&
@ -92,6 +101,40 @@ test_expect_success 'mailmap.file non-existant' ' @@ -92,6 +101,40 @@ test_expect_success 'mailmap.file non-existant' '
test_cmp expect actual
'

cat >expect <<\EOF
Internal Guy (1):
second

Repo Guy (1):
initial

EOF

test_expect_success 'name entry after email entry' '
mkdir -p internal_mailmap &&
echo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&
echo "Internal Guy <bugs@company.xx>" >>internal_mailmap/.mailmap &&
git shortlog HEAD >actual &&
test_cmp expect actual
'

cat >expect <<\EOF
Internal Guy (1):
second

Repo Guy (1):
initial

EOF

test_expect_success 'name entry after email entry, case-insensitive' '
mkdir -p internal_mailmap &&
echo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&
echo "Internal Guy <BUGS@Company.xx>" >>internal_mailmap/.mailmap &&
git shortlog HEAD >actual &&
test_cmp expect actual
'

cat >expect <<\EOF
A U Thor (1):
initial
@ -101,7 +144,7 @@ nick1 (1): @@ -101,7 +144,7 @@ nick1 (1):

EOF
test_expect_success 'No mailmap files, but configured' '
rm .mailmap &&
rm -f .mailmap internal_mailmap/.mailmap &&
git shortlog HEAD >actual &&
test_cmp expect actual
'
@ -153,7 +196,7 @@ test_expect_success 'Shortlog output (complex mapping)' ' @@ -153,7 +196,7 @@ test_expect_success 'Shortlog output (complex mapping)' '
test_tick &&
git commit --author "CTO <cto@coompany.xx>" -m seventh &&

mkdir internal_mailmap &&
mkdir -p internal_mailmap &&
echo "Committed <committer@example.com>" > internal_mailmap/.mailmap &&
echo "<cto@company.xx> <cto@coompany.xx>" >> internal_mailmap/.mailmap &&
echo "Some Dude <some@dude.xx> nick1 <bugs@company.xx>" >> internal_mailmap/.mailmap &&
@ -198,18 +241,18 @@ test_expect_success 'Log output (complex mapping)' ' @@ -198,18 +241,18 @@ test_expect_success 'Log output (complex mapping)' '

# 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
^OBJI (A U Thor DATE 1) one
OBJID (Some Dude DATE 2) two
OBJID (Other Author DATE 3) three
OBJID (Other Author DATE 4) four
OBJID (Santa Claus DATE 5) five
OBJID (Santa Claus DATE 6) six
OBJID (CTO DATE 7) seven
EOF

test_expect_success 'Blame output (complex mapping)' '
git blame one >actual &&
test_cmp expect actual
fuzz_blame actual >actual.fuzz &&
test_cmp expect actual.fuzz
'

test_done

Loading…
Cancel
Save