diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2013-04-22 16:55:18 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-04-22 15:25:54 -0700 |
commit | a2e462c5b50c6072e478d434b3892c9f7155a084 (patch) | |
tree | 2e006d4548457b56b1d0dd2f026bebb4b297c2b7 /contrib | |
parent | remote-hg: add custom local tag write code (diff) | |
download | tgif-a2e462c5b50c6072e478d434b3892c9f7155a084.tar.xz |
remote-hg: improve email sanitation
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/remote-helpers/git-remote-hg | 10 | ||||
-rwxr-xr-x | contrib/remote-helpers/test-hg.sh | 8 |
2 files changed, 12 insertions, 6 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg index 3c6eeb7976..0084709c8c 100755 --- a/contrib/remote-helpers/git-remote-hg +++ b/contrib/remote-helpers/git-remote-hg @@ -51,6 +51,7 @@ import urlparse NAME_RE = re.compile('^([^<>]+)') AUTHOR_RE = re.compile('^([^<>]+?)? ?<([^<>]*)>$') +EMAIL_RE = re.compile('^([^<>]+[^ \\\t<>])?\\b(?:[ \\t<>]*?)\\b([^ \\t<>]+@[^ \\t<>]+)') AUTHOR_HG_RE = re.compile('^(.*?) ?<(.*?)(?:>(.+)?)?$') RAW_AUTHOR_RE = re.compile('^(\w+) (?:(.+)? )?<(.*)> (\d+) ([+-]\d+)') @@ -245,9 +246,14 @@ def fixup_user_git(user): name = m.group(1) mail = m.group(2).strip() else: - m = NAME_RE.match(user) + m = EMAIL_RE.match(user) if m: - name = m.group(1).strip() + name = m.group(1) + mail = m.group(2) + else: + m = NAME_RE.match(user) + if m: + name = m.group(1).strip() return (name, mail) def fixup_user_hg(user): diff --git a/contrib/remote-helpers/test-hg.sh b/contrib/remote-helpers/test-hg.sh index d5b873051f..8de2aa7fec 100755 --- a/contrib/remote-helpers/test-hg.sh +++ b/contrib/remote-helpers/test-hg.sh @@ -137,15 +137,15 @@ test_expect_success 'authors' ' author_test alpha "" "H G Wells <wells@example.com>" && author_test beta "test" "test <unknown>" && - author_test beta "test <test@example.com> (comment)" "test <unknown>" && + author_test beta "test <test@example.com> (comment)" "test <test@example.com>" && author_test gamma "<test@example.com>" "Unknown <test@example.com>" && author_test delta "name<test@example.com>" "name <test@example.com>" && - author_test epsilon "name <test@example.com" "name <unknown>" && + author_test epsilon "name <test@example.com" "name <test@example.com>" && author_test zeta " test " "test <unknown>" && author_test eta "test < test@example.com >" "test <test@example.com>" && - author_test theta "test >test@example.com>" "test <unknown>" && + author_test theta "test >test@example.com>" "test <test@example.com>" && author_test iota "test < test <at> example <dot> com>" "test <unknown>" && - author_test kappa "test@example.com" "test@example.com <unknown>" + author_test kappa "test@example.com" "Unknown <test@example.com>" ) && git clone "hg::$PWD/hgrepo" gitrepo && |