зеркало из https://github.com/microsoft/git.git
pretty: add "%aL" etc. to show local-part of email addresses
In many projects the number of contributors is low enough that users know each other and the full email address doesn't need to be displayed. Displaying only the author's username saves a lot of columns on the screen. Existing 'e/E' (as in "%ae" and "%aE") placeholders would show the author's address as "prarit@redhat.com", which would waste columns to show the same domain-part for all contributors when used in a project internal to redhat. Introduce 'l/L' placeholders that strip '@' and domain part from the e-mail address. Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
45e206f0d8
Коммит
d8b8217c8a
|
@ -163,6 +163,9 @@ The placeholders are:
|
|||
'%ae':: author email
|
||||
'%aE':: author email (respecting .mailmap, see linkgit:git-shortlog[1]
|
||||
or linkgit:git-blame[1])
|
||||
'%al':: author email local-part (the part before the '@' sign)
|
||||
'%aL':: author local-part (see '%al') respecting .mailmap, see
|
||||
linkgit:git-shortlog[1] or linkgit:git-blame[1])
|
||||
'%ad':: author date (format respects --date= option)
|
||||
'%aD':: author date, RFC2822 style
|
||||
'%ar':: author date, relative
|
||||
|
@ -175,6 +178,9 @@ The placeholders are:
|
|||
'%ce':: committer email
|
||||
'%cE':: committer email (respecting .mailmap, see
|
||||
linkgit:git-shortlog[1] or linkgit:git-blame[1])
|
||||
'%cl':: author email local-part (the part before the '@' sign)
|
||||
'%cL':: author local-part (see '%cl') respecting .mailmap, see
|
||||
linkgit:git-shortlog[1] or linkgit:git-blame[1])
|
||||
'%cd':: committer date (format respects --date= option)
|
||||
'%cD':: committer date, RFC2822 style
|
||||
'%cr':: committer date, relative
|
||||
|
|
9
pretty.c
9
pretty.c
|
@ -696,7 +696,7 @@ static size_t format_person_part(struct strbuf *sb, char part,
|
|||
mail = s.mail_begin;
|
||||
maillen = s.mail_end - s.mail_begin;
|
||||
|
||||
if (part == 'N' || part == 'E') /* mailmap lookup */
|
||||
if (part == 'N' || part == 'E' || part == 'L') /* mailmap lookup */
|
||||
mailmap_name(&mail, &maillen, &name, &namelen);
|
||||
if (part == 'n' || part == 'N') { /* name */
|
||||
strbuf_add(sb, name, namelen);
|
||||
|
@ -706,6 +706,13 @@ static size_t format_person_part(struct strbuf *sb, char part,
|
|||
strbuf_add(sb, mail, maillen);
|
||||
return placeholder_len;
|
||||
}
|
||||
if (part == 'l' || part == 'L') { /* local-part */
|
||||
const char *at = memchr(mail, '@', maillen);
|
||||
if (at)
|
||||
maillen = at - mail;
|
||||
strbuf_add(sb, mail, maillen);
|
||||
return placeholder_len;
|
||||
}
|
||||
|
||||
if (!s.date_begin)
|
||||
goto skip;
|
||||
|
|
|
@ -412,6 +412,34 @@ test_expect_success 'Log output (complex mapping)' '
|
|||
test_cmp expect actual
|
||||
'
|
||||
|
||||
cat >expect << EOF
|
||||
Author email cto@coompany.xx has local-part cto
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email me@company.xx has local-part me
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email me@company.xx has local-part me
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email nick2@company.xx has local-part nick2
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email bugs@company.xx has local-part bugs
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email bugs@company.xx has local-part bugs
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
|
||||
Author email author@example.com has local-part author
|
||||
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
||||
EOF
|
||||
|
||||
test_expect_success 'Log output (local-part email address)' '
|
||||
git log --pretty=format:"Author email %ae has local-part %al%nCommitter email %ce has local-part %cl%n" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
cat >expect << EOF
|
||||
Author: CTO <cto@company.xx>
|
||||
Author: Santa Claus <santa.claus@northpole.xx>
|
||||
|
|
|
@ -109,31 +109,35 @@ commit $head1
|
|||
EOF
|
||||
|
||||
# we don't test relative here
|
||||
test_format author %an%n%ae%n%ad%n%aD%n%at <<EOF
|
||||
test_format author %an%n%ae%n%al%n%ad%n%aD%n%at <<EOF
|
||||
commit $head2
|
||||
$GIT_AUTHOR_NAME
|
||||
$GIT_AUTHOR_EMAIL
|
||||
$TEST_AUTHOR_LOCALNAME
|
||||
Thu Apr 7 15:13:13 2005 -0700
|
||||
Thu, 7 Apr 2005 15:13:13 -0700
|
||||
1112911993
|
||||
commit $head1
|
||||
$GIT_AUTHOR_NAME
|
||||
$GIT_AUTHOR_EMAIL
|
||||
$TEST_AUTHOR_LOCALNAME
|
||||
Thu Apr 7 15:13:13 2005 -0700
|
||||
Thu, 7 Apr 2005 15:13:13 -0700
|
||||
1112911993
|
||||
EOF
|
||||
|
||||
test_format committer %cn%n%ce%n%cd%n%cD%n%ct <<EOF
|
||||
test_format committer %cn%n%ce%n%cl%n%cd%n%cD%n%ct <<EOF
|
||||
commit $head2
|
||||
$GIT_COMMITTER_NAME
|
||||
$GIT_COMMITTER_EMAIL
|
||||
$TEST_COMMITTER_LOCALNAME
|
||||
Thu Apr 7 15:13:13 2005 -0700
|
||||
Thu, 7 Apr 2005 15:13:13 -0700
|
||||
1112911993
|
||||
commit $head1
|
||||
$GIT_COMMITTER_NAME
|
||||
$GIT_COMMITTER_EMAIL
|
||||
$TEST_COMMITTER_LOCALNAME
|
||||
Thu Apr 7 15:13:13 2005 -0700
|
||||
Thu, 7 Apr 2005 15:13:13 -0700
|
||||
1112911993
|
||||
|
|
|
@ -404,9 +404,13 @@ unset VISUAL EMAIL LANGUAGE COLUMNS $("$PERL_PATH" -e '
|
|||
unset XDG_CACHE_HOME
|
||||
unset XDG_CONFIG_HOME
|
||||
unset GITPERLLIB
|
||||
GIT_AUTHOR_EMAIL=author@example.com
|
||||
TEST_AUTHOR_LOCALNAME=author
|
||||
TEST_AUTHOR_DOMAIN=example.com
|
||||
GIT_AUTHOR_EMAIL=${TEST_AUTHOR_LOCALNAME}@${TEST_AUTHOR_DOMAIN}
|
||||
GIT_AUTHOR_NAME='A U Thor'
|
||||
GIT_COMMITTER_EMAIL=committer@example.com
|
||||
TEST_COMMITTER_LOCALNAME=committer
|
||||
TEST_COMMITTER_DOMAIN=example.com
|
||||
GIT_COMMITTER_EMAIL=${TEST_COMMITTER_LOCALNAME}@${TEST_COMMITTER_DOMAIN}
|
||||
GIT_COMMITTER_NAME='C O Mitter'
|
||||
GIT_MERGE_VERBOSITY=5
|
||||
GIT_MERGE_AUTOEDIT=no
|
||||
|
|
Загрузка…
Ссылка в новой задаче