view tests/test-mailmap.t @ 40999:dcac24ec935b

commandserver: preload repository in master server and reuse its file cache This greatly speeds up repository operation with lots of obsolete markers: $ ls -lh .hg/store/obsstore -rw-r--r-- 1 yuya yuya 21M Dec 2 17:55 .hg/store/obsstore $ time hg log -G -l10 --pager no (hg) 1.79s user 0.13s system 99% cpu 1.919 total (chg uncached) 0.00s user 0.01s system 0% cpu 1.328 total (chg cached) 0.00s user 0.00s system 3% cpu 0.180 total As you can see, the implementation of the preloader function is highly experimental. It works, but I'm yet to be sure how things can be organized. So I don't want to formalize the API at this point.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 31 Oct 2018 22:43:08 +0900
parents 8e57c3b0dce4
children
line wrap: on
line source

Create a repo and add some commits

  $ hg init mm
  $ cd mm
  $ echo "Test content" > testfile1
  $ hg add testfile1
  $ hg commit -m "First commit" -u "Proper <commit@m.c>"
  $ echo "Test content 2" > testfile2
  $ hg add testfile2
  $ hg commit -m "Second commit" -u "Commit Name 2 <commit2@m.c>"
  $ echo "Test content 3" > testfile3
  $ hg add testfile3
  $ hg commit -m "Third commit" -u "Commit Name 3 <commit3@m.c>"
  $ echo "Test content 4" > testfile4
  $ hg add testfile4
  $ hg commit -m "Fourth commit" -u "Commit Name 4 <commit4@m.c>"

Add a .mailmap file with each possible entry type plus comments
  $ cat > .mailmap << EOF
  > # Comment shouldn't break anything
  > <proper@m.c> <commit@m.c> # Should update email only
  > Proper Name 2 <commit2@m.c> # Should update name only
  > Proper Name 3 <proper@m.c> <commit3@m.c> # Should update name, email due to email
  > Proper Name 4 <proper@m.c> Commit Name 4 <commit4@m.c> # Should update name, email due to name, email
  > EOF
  $ hg add .mailmap
  $ hg commit -m "Add mailmap file" -u "Testuser <test123@m.c>"

Output of commits should be normal without filter
  $ hg log -T "{author}\n" -r "all()"
  Proper <commit@m.c>
  Commit Name 2 <commit2@m.c>
  Commit Name 3 <commit3@m.c>
  Commit Name 4 <commit4@m.c>
  Testuser <test123@m.c>

Output of commits with filter shows their mailmap values
  $ hg log -T "{mailmap(author)}\n" -r "all()"
  Proper <proper@m.c>
  Proper Name 2 <commit2@m.c>
  Proper Name 3 <proper@m.c>
  Proper Name 4 <proper@m.c>
  Testuser <test123@m.c>

Add new mailmap entry for testuser
  $ cat >> .mailmap << EOF
  > <newmmentry@m.c> <test123@m.c>
  > EOF

Output of commits with filter shows their updated mailmap values
  $ hg log -T "{mailmap(author)}\n" -r "all()"
  Proper <proper@m.c>
  Proper Name 2 <commit2@m.c>
  Proper Name 3 <proper@m.c>
  Proper Name 4 <proper@m.c>
  Testuser <newmmentry@m.c>

A commit with improperly formatted user field should not break the filter
  $ echo "some more test content" > testfile1
  $ hg commit -m "Commit with improper user field" -u "Improper user"
  $ hg log -T "{mailmap(author)}\n" -r "all()"
  Proper <proper@m.c>
  Proper Name 2 <commit2@m.c>
  Proper Name 3 <proper@m.c>
  Proper Name 4 <proper@m.c>
  Testuser <newmmentry@m.c>
  Improper user

No TypeError beacause of invalid input

  $ hg log -T '{mailmap(termwidth)}\n' -r0
  80