fix message stripping and malformed user info

This commit is contained in:
Scott Chacon 2009-06-02 19:33:48 -07:00
parent 3a40638749
commit d92e94dad8
3 changed files with 33 additions and 11 deletions

View File

@ -4,13 +4,12 @@ GENERAL
- hg push git@... - hg push git@...
- hg fetch [remote] (remote is url, hg alias or hg-git remote) - hg fetch [remote] (remote is url, hg alias or hg-git remote)
- hg clone url - hg clone url
* file:/// support
* work fine with eclipse plugin or tortoise-hg * work fine with eclipse plugin or tortoise-hg
MAPPING ISSUES MAPPING ISSUES
============== ==============
* work in Git on a named branch created in Hg is forward-ported to be named branch commits in Hg and stripped back out if re-exported * work in Git on a named branch created in Hg is forward-ported to be named branch commits in Hg and stripped back out if re-exported
* timezone issues (?)
REMOTE/BRANCH STUFF REMOTE/BRANCH STUFF

View File

@ -1,4 +1,4 @@
import os, errno, sys, time, datetime, pickle, copy, math, urllib import os, errno, sys, time, datetime, pickle, copy, math, urllib, re
import toposort import toposort
import dulwich import dulwich
from dulwich.repo import Repo from dulwich.repo import Repo
@ -255,7 +255,20 @@ class GitHandler(object):
# hg authors might not have emails # hg authors might not have emails
author = ctx.user() author = ctx.user()
if not '>' in author:
# check for git author pattern compliance
regex = re.compile('^(.*?) \<(.*?)\>(.*)$')
a = regex.match(author)
if a:
name = a.group(1)
email = a.group(2)
if len(a.group(3)) > 0:
name += ' ext:(' + urllib.quote(a.group(3)) + ')'
author = name + ' <' + email + '>'
print "AUTHOR"
print author
else:
author = author + ' <none@none>' author = author + ' <none@none>'
commit['author'] = author + ' ' + str(int(time)) + ' ' + format_timezone(-timezone) commit['author'] = author + ' ' + str(int(time)) + ' ' + format_timezone(-timezone)
message = ctx.description() message = ctx.description()
@ -722,6 +735,16 @@ class GitHandler(object):
author = commit.author author = commit.author
# convert extra data back to the end
if ' ext:' in commit.author:
regex = re.compile('^(.*?)\ ext:\((.*)\) <(.*)\>$')
m = regex.match(commit.author)
if m:
name = m.group(1)
ex = urllib.unquote(m.group(2))
email = m.group(3)
author = name + ' <' + email + '>' + ex
if ' <none@none>' in commit.author: if ' <none@none>' in commit.author:
author = commit.author[:-12] author = commit.author[:-12]

View File

@ -91,13 +91,13 @@ class hgrepo(localrepo.localrepository):
mn = self.manifest.add(m1, trp, linkrev, c1[0], c2[0], mn = self.manifest.add(m1, trp, linkrev, c1[0], c2[0],
(new, removed1)) (new, removed1))
lines = [line.rstrip() for line in text.rstrip().splitlines()] #lines = [line.rstrip() for line in text.rstrip().splitlines()]
while lines and not lines[0]: #while lines and not lines[0]:
del lines[0] # del lines[0]
if not lines and use_dirstate: #text = '\n'.join(lines)
raise util.Abort(_("empty commit message")) if text[-1] == "\n":
text = '\n'.join(lines) text = text[:-1]
file_list = [] file_list = []
if force_files == False: if force_files == False:
file_list = [] file_list = []