##// END OF EJS Templates
scmutil: make shortest() respect disambiguation revset...
scmutil: make shortest() respect disambiguation revset The previous patch would let you use a shorter prefix if the prefix is unique within a configured revset. However, that's not very useful if there's no simple way of knowing what that shorter prefix is. This patch adapts the shortest() template function to use the shorter prefixes for nodes in the configured revset. This is currently extremely slow, because it calculates the revset for each call to shortest(). To make this faster, the next patch will start caching the revset instance. Ideally we'd cache a prefix tree instance instead. Differential Revision: https://phab.mercurial-scm.org/D4038

File last commit:

r37277:8e57c3b0 default
r38879:6f7c9527 default
Show More
test-mailmap.t
72 lines | 2.3 KiB | text/troff | Tads3Lexer
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