hg2git.py: Disable parsing Signef-off-by lines and add -s to enable
authorRocco Rutte <pdmef@gmx.net>
Mon, 12 Mar 2007 08:00:18 +0000 (08:00 +0000)
committerRocco Rutte <pdmef@gmx.net>
Mon, 12 Mar 2007 08:00:18 +0000 (08:00 +0000)
IMHO it's highly unusual to have these lines in hg projects but who
knows. As it's slow to parse these types of lines (with regex), it's
disabled by default and the 'author' command of git-fast-import isn't
used at all.

It can be enabled by giving the -s switch to hg2git.sh.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
hg2git.py

index b816eed..9d832c3 100644 (file)
--- a/hg2git.py
+++ b/hg2git.py
@@ -163,13 +163,14 @@ def get_author(logmessage,committer,authors):
       return r
   return committer
 
-def export_commit(ui,repo,revision,marks,heads,last,max,count,authors):
+def export_commit(ui,repo,revision,marks,heads,last,max,count,authors,sob):
   (_,user,(time,timezone),files,desc,branch,_)=get_changeset(ui,repo,revision,authors)
   parents=repo.changelog.parentrevs(revision)
 
   wr('commit refs/heads/%s' % branch)
   wr('mark :%d' % (revision+1))
-  wr('author %s %d %s' % (get_author(desc,user,authors),time,timezone))
+  if sob:
+    wr('author %s %d %s' % (get_author(desc,user,authors),time,timezone))
   wr('committer %s %d %s' % (user,time,timezone))
   wr('data %d' % (len(desc)+1)) # wtf?
   wr(desc)
@@ -220,8 +221,8 @@ def export_commit(ui,repo,revision,marks,heads,last,max,count,authors):
   man=ctx.manifest()
   added,changed,removed=get_filechanges(repo,revision,parents,man)
 
-  sys.stderr.write('Exporting revision %d with %d/%d/%d added/changed/removed files\n' %
-      (revision,len(added),len(changed),len(removed)))
+  sys.stderr.write('Exporting revision %d/%d with %d/%d/%d added/changed/removed files\n' %
+      (revision,max,len(added),len(changed),len(removed)))
 
   for a in added+changed:
     fctx=ctx.filectx(a)
@@ -307,7 +308,7 @@ def verify_heads(ui,repo,cache):
         '\n%s (repo) != %s (cache)\n' % (b,sha1,c))
   return True
 
-def hg2git(repourl,m,marksfile,headsfile,tipfile,authors={}):
+def hg2git(repourl,m,marksfile,headsfile,tipfile,authors={},sob=False):
   _max=int(m)
 
   marks_cache=load_cache(marksfile)
@@ -323,13 +324,13 @@ def hg2git(repourl,m,marksfile,headsfile,tipfile,authors={}):
 
   min=int(state_cache.get('tip',0))
   max=_max
-  if _max<=0:
+  if _max<0:
     max=tip
 
   c=0
   last={}
   for rev in range(min,max):
-    c=export_commit(ui,repo,rev,marks_cache,heads_cache,last,tip,c,authors)
+    c=export_commit(ui,repo,rev,marks_cache,heads_cache,last,tip,c,authors,sob)
 
   c=export_tags(ui,repo,marks_cache,min,max,c,authors)
 
@@ -359,10 +360,12 @@ if __name__=='__main__':
       help="File to read status from")
   parser.add_option("-r","--repo",dest="repourl",
       help="URL of repo to import")
+  parser.add_option("-s",action="store_true",dest="sob",
+      default=False,help="Enable parsing Signed-off-by lines")
 
   (options,args)=parser.parse_args()
 
-  m=0
+  m=-1
   if options.max!=None: m=options.max
 
   if options.marksfile==None: bail(parser,'--marks')
@@ -371,4 +374,4 @@ if __name__=='__main__':
   if options.marksfile==None: bail(parser,'--repo')
 
   sys.exit(hg2git(options.repourl,m,options.marksfile,options.headsfile,
-    options.headsfile))
+    options.headsfile,sob=options.sob))