Thread (7 messages) 7 messages, 1 author, 2016-06-15
DORMANTno replies
Revisions (5)
  1. v1 [diff vs current]
  2. v2 [diff vs current]
  3. v3 [diff vs current]
  4. v4 [diff vs current]
  5. v5 current

[PATCH v5 0/5] Extend mailmap functionality

From: Marius Storm-Olsen <hidden>
Date: 2016-06-15 22:46:07

  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 [off-list ref]

while this patch series adds support for
    [off-list ref] [off-list ref]
    Proper Name [off-list ref] [off-list ref]
    Proper Name [off-list ref] Commit Name [off-list ref]

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 [off-list ref]' in the public repo, but by
using an private mailmap file, map the name back to
'John Doe [off-list ref]' 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help