diff options
Diffstat (limited to 'exporters/hg2git.py')
-rwxr-xr-x | exporters/hg2git.py | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/exporters/hg2git.py b/exporters/hg2git.py deleted file mode 100755 index e342834..0000000 --- a/exporters/hg2git.py +++ /dev/null @@ -1,112 +0,0 @@ - -# 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 -import re -import os -import sys - -# default git branch name -cfg_master='master' -# default origin name -origin_name='' -# silly regex to see if user field has email address -user_re=re.compile('([^<]+) (<[^>]+>)$') -# silly regex to clean out user names -user_clean_re=re.compile('^["]([^"]+)["]$') - -def set_default_branch(name): - global cfg_master - cfg_master = name - -def set_origin_name(name): - global origin_name - origin_name = name - -def setup_repo(url): - 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): - 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 - else: - # if we have 'Name <mail>' syntax, everything is fine :) - name,mail=m.group(1),m.group(2) - - # remove any silly quoting from username - m2=user_clean_re.match(name) - if m2!=None: - name=m2.group(1) - return '%s %s' % (name,mail) - -def get_branch(name): - # 'HEAD' is the result of a bug in mutt's cvs->hg conversion, - # other CVS imports may need it, too - if name=='HEAD' or name=='default' or name=='': - name=cfg_master - if origin_name: - return origin_name + '/' + name - return name - -def get_changeset(ui,repo,revision,authors={}): - node=repo.lookup(revision) - (manifest,user,(time,timezone),files,desc,extra)=repo.changelog.read(node) - tz="%+03d%02d" % (-timezone / 3600, ((-timezone % 3600) / 60)) - branch=get_branch(extra.get('branch','master')) - return (node,manifest,fixup_user(user,authors),(time,tz),files,desc,branch,extra) - -def mangle_key(key): - return key - -def load_cache(filename,get_key=mangle_key): - cache={} - if not os.path.exists(filename): - return cache - f=open(filename,'r') - l=0 - for line in f.readlines(): - l+=1 - fields=line.split(' ') - if fields==None or not len(fields)==2 or fields[0][0]!=':': - sys.stderr.write('Invalid file format in [%s], line %d\n' % (filename,l)) - continue - # put key:value in cache, key without ^: - cache[get_key(fields[0][1:])]=fields[1].split('\n')[0] - f.close() - return cache - -def save_cache(filename,cache): - f=open(filename,'w+') - map(lambda x: f.write(':%s %s\n' % (str(x),str(cache.get(x)))),cache.keys()) - f.close() - -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) - p=os.popen(cmd) - l=p.readline() - p.close() - if l == None or len(l) == 0: - return None - return l[0:40] - except IOError: - return None |