# Copyright (c) 2007, 2008 Rocco Rutte <pdmef@gmx.net> and others.
# License: MIT <http://www.opensource.org/licenses/mit-license.php>
-from mercurial import repo,hg,cmdutil,util,ui,revlog,node
+from mercurial import hg,util,ui,templatefilters
import re
import os
import sys
# default origin name
origin_name=''
# silly regex to see if user field has email address
-user_re=re.compile('([^<]+) (<[^>]+>)$')
+user_re=re.compile('([^<]+) (<[^>]*>)$')
# silly regex to clean out user names
user_clean_re=re.compile('^["]([^"]+)["]$')
origin_name = name
def setup_repo(url):
- myui=ui.ui(interactive=False)
+ try:
+ myui=ui.ui(interactive=False)
+ except TypeError:
+ myui=ui.ui()
+ myui.setconfig('ui', 'interactive', 'off')
return myui,hg.repository(myui,url)
def fixup_user(user,authors):
+ user=user.strip("\"")
if authors!=None:
# if we have an authors table, try to get mapping
# by defaulting to the current value of 'user'
user=authors.get(user,user)
name,mail,m='','',user_re.match(user)
if m==None:
- # if we don't have 'Name <mail>' syntax, use 'user
- # <devnull@localhost>' if use contains no at and
- # 'user <user>' otherwise
- name=user
- if '@' not in user:
- mail='<devnull@localhost>'
- else:
- mail='<%s>' % user
+ # if we don't have 'Name <mail>' syntax, extract name
+ # and mail from hg helpers. this seems to work pretty well.
+ # if email doesn't contain @, replace it with devnull@localhost
+ name=templatefilters.person(user)
+ mail='<%s>' % util.email(user)
+ if '@' not in mail:
+ mail = '<devnull@localhost>'
else:
# if we have 'Name <mail>' syntax, everything is fine :)
name,mail=m.group(1),m.group(2)
def get_git_sha1(name,type='heads'):
try:
# use git-rev-parse to support packed refs
- cmd="GIT_DIR='%s' git rev-parse --verify refs/%s/%s 2>/dev/null" % (os.getenv('GIT_DIR','/dev/null'),type,name)
+ cmd="git rev-parse --verify refs/%s/%s 2>%s" % (type,name,os.devnull)
p=os.popen(cmd)
l=p.readline()
p.close()