Skip to content

Extend mailmap functionality

Marius Storm-Olsen git 4 versions In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest5 patches 1 replyIn review
  2. v44 patches 3 repliesSuperseded
  3. v34 patches 4 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v24 patches10 repliesSuperseded

Changes in v5 from the cover letter

---
* Rename log.mailmap variable to mailmap.file
* Fix mailmap tests using shortlog, by adding HEAD
* Factor out the mailmap documentation, and include it from both git-shortlog.txt and git-blame.txt, since they both use mailmap directly. Link to these from pretty-format.txt, for all commands using the pretty option.

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5Add mailmap.file as configurational option for mailmap locationDocumentation/config.txt Documentation/git-shortlog.txt builtin-blame.c +7 more+147 -70 replies
2/5Add find_insert_index, insert_at_index and clear_func functions to string_liststring-list.c string-list.h+48 -40 replies
3/5Add map_user() and clear_mailmap() to mailmapDocumentation/git-shortlog.txt mailmap.c mailmap.h+236 -510 replies
4/5Change current mailmap usage to do matching on both name and email of author/committer.Documentation/pretty-formats.txt builtin-blame.c builtin-shortlog.c +2 more+186 -510 replies
5/5Move mailmap documentation into separate fileDocumentation/git-blame.txt Documentation/git-shortlog.txt Documentation/mailmap.txt +1 more+94 -840 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v5 yet.

Read the v5 thread

Cover letter [PATCH v5 0/5] Extend mailmap functionality

v5:
---
* Rename log.mailmap variable to mailmap.file
* Fix mailmap tests using shortlog, by adding HEAD
* Factor out the mailmap documentation, and include it from both git-shortlog.txt and git-blame.txt, since they both use mailmap directly. Link to these from pretty-format.txt, for all commands using the pretty option.
v4:
---
* Refactored out name and email parsing into separate function
* Added support for only email replacement (<new> <old> construct)
* Added "static" to functions local to compile unit only
* Fixed C++ style comment to bash style comment in commit message
* Added more air in the commit messages
* Rebased ontop of latest master
v3:
---
* Make log.mailmap augment repo "/.mailmap" rather than override
* Remove second argument of read_mailmap(<map>, <file>, <abbrev>);
* Wrap commit messages within column 70
v2:
---
* Folded in documentation fixup from patch 4 into patch 3.

This patch series extends the mailmap functionality to:
1) Allow the mailmap file in any location (also outside repo)
2) Enable mailmap to match on both Name and Email

So, why would this be a good thing?

2) Lets you replace both name and email of an author/committer, based on a name and/or email, _and_ replace email only, based on old email. So, should you have done commits with faulty address, or if an old email simply isn't valid anymore, you can add a mapping for that to replace it. So, the old style mapping is
Proper Name <[email protected]>

while this patch series adds support for
<[email protected]> <[email protected]>
Proper Name <[email protected]> <[email protected]> Proper Name <[email protected]> Commit Name <[email protected]>

1) Lets you keep a private mailmap file, which is not distributed with your repository.

This extended mapping is necessary when a company wants to have their repositories open to the public, but needs to protect the identities of the developers. It enables you to only show nicks and standardized emails, like 'Dev123 <[email protected]>' in the public repo, but by using an private mailmap file, map the name back to
'John Doe <[email protected]>' inside the company.

Patch serie applies cleanly on master branch (88ccb9f9), and test run shows no regressions.

Marius Storm-Olsen (5):
Add mailmap.file as configurational option for mailmap location Add find_insert_index, insert_at_index and clear_func functions to
string_list
Add map_user() and clear_mailmap() to mailmap
Change current mailmap usage to do matching on both name and email of
author/committer.
Move mailmap documentation into separate file

 Documentation/config.txt         |    8 ++
 Documentation/git-blame.txt      |    6 +
 Documentation/git-shortlog.txt   |   49 ++-------
 Documentation/mailmap.txt        |   75 +++++++++++++
 Documentation/pretty-formats.txt |    6 +-
 builtin-blame.c                  |   52 ++++++----
 builtin-shortlog.c               |   25 ++++-
 cache.h                          |    1 +
 config.c                         |   12 ++
 mailmap.c                        |  208 +++++++++++++++++++++++++++++++------
 mailmap.h                        |    6 +-
 pretty.c                         |   59 ++++++-----
 string-list.c                    |   43 +++++++-
 string-list.h                    |    9 ++
 t/t4203-mailmap.sh               |  215 ++++++++++++++++++++++++++++++++++++++
 15 files changed, 644 insertions(+), 130 deletions(-)
 create mode 100644 Documentation/mailmap.txt
 create mode 100755 t/t4203-mailmap.sh