hg-fast-export.py: Cache possibly sanitized branch names
authorRocco Rutte <pdmef@gmx.net>
Fri, 26 Oct 2007 15:11:57 +0000 (17:11 +0200)
committerRocco Rutte <pdmef@gmx.net>
Fri, 26 Oct 2007 15:11:57 +0000 (17:11 +0200)
...instead of doing it for every single commit.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
hg-fast-export.py

index 97dba5f..e3af8a6 100755 (executable)
@@ -152,11 +152,18 @@ def sanitize_name(name,what="branch"):
     sys.stderr.write('Warning: sanitized %s [%s] to [%s]\n' % (what,name,n))
   return n
 
-def export_commit(ui,repo,revision,marks,heads,last,max,count,authors,sob):
+def export_commit(ui,repo,revision,marks,heads,last,max,count,authors,sob,brmap):
+  def get_branchname(name):
+    if brmap.has_key(name):
+      return brmap[name]
+    n=sanitize_name(name)
+    brmap[name]=n
+    return n
+
   (revnode,_,user,(time,timezone),files,desc,branch,_)=get_changeset(ui,repo,revision,authors)
   parents=repo.changelog.parentrevs(revision)
 
-  branch=sanitize_name(branch)
+  branch=get_branchname(branch)
 
   wr('commit refs/heads/%s' % branch)
   wr('mark :%d' % (revision+1))
@@ -332,8 +339,9 @@ def hg2git(repourl,m,marksfile,headsfile,tipfile,authors={},sob=False,force=Fals
 
   c=0
   last={}
+  brmap={}
   for rev in range(min,max):
-    c=export_commit(ui,repo,rev,marks_cache,heads_cache,last,max,c,authors,sob)
+    c=export_commit(ui,repo,rev,marks_cache,heads_cache,last,max,c,authors,sob,brmap)
 
   c=export_tags(ui,repo,marks_cache,min,max,c,authors)