[Pkg-ocaml-maint-commits] r5913 - /trunk/tools/svn2git/glondu_svn2git.py

glondu-guest at users.alioth.debian.org glondu-guest at users.alioth.debian.org
Sat Aug 9 11:05:40 UTC 2008


Author: glondu-guest
Date: Sat Aug  9 11:05:40 2008
New Revision: 5913

URL: http://svn.debian.org/wsvn/?sc=1&rev=5913
Log:
Various improvements in shell script generation

 * handle .tar.bz2 files
 * merge histories of trunk and tags, to tag more reliably
 * remove useless dict-related stuff

Modified:
    trunk/tools/svn2git/glondu_svn2git.py

Modified: trunk/tools/svn2git/glondu_svn2git.py
URL: http://svn.debian.org/wsvn/trunk/tools/svn2git/glondu_svn2git.py?rev=5913&op=diff
==============================================================================
--- trunk/tools/svn2git/glondu_svn2git.py (original)
+++ trunk/tools/svn2git/glondu_svn2git.py Sat Aug  9 11:05:40 2008
@@ -154,7 +154,7 @@
                         nb_files += 1
                     else:
                         print "# cannot recognize working dir in (%s) %s" % (action, file)
-                if file.endswith(".tar.gz"):
+                if file.endswith(".tar.gz") or file.endswith(".tar.bz2"):
                     m = svntgz_re.match(file)
                     if tgz or not m:
                         print "# deal with (%s) %s manually" % (action, file)
@@ -163,7 +163,7 @@
                     nb_files -= 1
                     tgz.append(file)
         if working_dir:
-            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --delete ../svn/%s/debian ." % local_wdir
+            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --exclude='*.tar.bz2' --delete ../svn/%s/debian ." % local_wdir
             print "git add ."
             print "git add -u"
         else:
@@ -285,7 +285,8 @@
 
     def export_sh(self):
         print "echo Importing svn tag from revision %d into git" % self.rev
-        print "##( cd ../svn && svn update -r%d )" % self.rev
+        print "( cd svn && svn update -r%d )" % self.rev
+        print "pushd git"
         self.export_git_environment()
         tag_name = None
         parent_rev = None
@@ -302,16 +303,6 @@
                         print "# duplicate parent %s" % rev
             else:
                 print "# unrecognized operation (%s) %s (will probably be skipped)" % (action, file)
-        if parent_rev:
-            commits = dico.get(parent_rev, [])
-            if len(commits) == 1:
-                print "git checkout %s" % commits[0]
-            else:
-                print "# %d commits, fill in manually (tag svn rev %d)" % (len(commits), parent_rev)
-                print "git checkout ????"
-        else:
-            print "# couldn't find the parent rev, fill in manually"
-            print "git checkout ????"
         if tag_name:
             # '~' is not valid in tag names
             tag_name = tag_name.replace('~', '.')
@@ -322,7 +313,7 @@
                 print "# %s %s" % (action, file)
                 cmd = "# git tag ??? -m " + escape_for_shell(self.msg).replace("\n", "\n# ")
         print cmd.encode("utf-8")
-        print
+        print "popd\n"
 
     def commit(self):
         m = svntag_re.match(self.msg)
@@ -388,7 +379,7 @@
         print "#- %d changes in upstream, %d changes in debian/" % (nb_upstream, nb_debian)
         if nb_upstream:
             print "git checkout upstream"
-            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --exclude=debian --delete ../svn/%s ." % working_dir
+            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --exclude='*.tar.bz2' --exclude=debian --delete ../svn/%s ." % working_dir
             print "git add ."
             print "git add -u"
             print ("git commit -m " + escape_for_shell(self.msg)).encode("utf-8")
@@ -396,7 +387,7 @@
             print "git checkout master"
             if nb_upstream:
                 print "git merge --no-commit upstream"
-            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --delete ../svn/%sdebian ." % working_dir
+            print "rsync -a --exclude=.svn --exclude='*.tar.gz' --exclude='*.tar.bz2' --delete ../svn/%sdebian ." % working_dir
             print "git add ."
             print "git add -u"
             print ("git commit -m " + escape_for_shell(self.msg)).encode("utf-8")
@@ -449,8 +440,6 @@
     initial_revision = 0
     xml = None
     xml_tags = None
-    dict_mode = False
-    dico_file = None
 
     for (x, y) in opts:
         if x == "-p": package_name = y
@@ -458,8 +447,6 @@
         elif x == "-r": initial_revision = int(y)
         elif x == "-x": xml = y
         elif x == "-y": xml_tags = y
-        elif x == "-d": dict_mode = True
-        elif x == "-e": dico_file = y
 
     if package_name:
         d = { "pkg": package_name }
@@ -471,7 +458,8 @@
         print >>sys.stderr, "A package name must be supplied!"
         sys.exit(1)
 
-    if (xml or xml_tags) and not dict_mode:
+    if xml or xml_tags:
+        # Script header
         print "#!/bin/zsh -e"
         print "export GIT_AUTHOR_NAME"
         print "export GIT_AUTHOR_EMAIL"
@@ -480,47 +468,15 @@
         print "export GIT_COMMITTER_EMAIL"
         print "export GIT_COMMITTER_DATE"
         print
-
-    if dico_file:
-        global dico
-        dico = {}
-        for line in file(dico_file):
-            if not line.startswith("#"):
-                svn, git = line.strip().split(" ")
-                svn = int(svn)
-                dico.setdefault(svn, [])
-                dico[svn].append(git)
-
-    if xml and package_name == "approx":
-        print "# Needs manual tuning"
-        print "exit 3"
-        xml = parse(xml)
-        logentries = xml.getElementsByTagName("logentry")
-        for x in logentries:
-            commit = GitCommitApprox(x, None)
-            if dict_mode:
-                commit.find_commit()
-            else:
-                commit.export_sh()
-        sys.exit(0)
-
-    if xml:
-        xml = parse(xml)
-        logentries = xml.getElementsByTagName("logentry")
-        for x in logentries:
-            commit = GitCommit(x, None)
-            if dict_mode:
-                commit.find_commit()
-            else:
-                commit.export_sh()
-        sys.exit(0)
-
-    if xml_tags:
-        xml = parse(xml_tags)
-        logentries = xml.getElementsByTagName("logentry")
-        for x in logentries:
-            commit = GitTag(x, None)
-            commit.export_sh()
+        # Merge and sort tags
+        logentries = parse(xml).getElementsByTagName("logentry")
+        revs = [GitCommit(x, None) for x in logentries]
+        logentries = parse(xml_tags).getElementsByTagName("logentry")
+        revs.extend([GitTag(x, None) for x in logentries])
+        revs.sort(key=lambda x: x.rev)
+        # Generate script
+        for x in revs:
+            x.export_sh()
         sys.exit(0)
 
     if package_name:
@@ -537,5 +493,5 @@
 
     print >>sys.stderr, """Usages:
   %(prog)s -p <package-name> [-t <tarball-location>] [-r <initial-revision>]
-  %(prog)s -x <xml-log>""" % { "prog": sys.argv[0] }
+  %(prog)s -x <xml-log> -y <xml-tag-log>""" % { "prog": sys.argv[0] }
     sys.exit(1)




More information about the Pkg-ocaml-maint-commits mailing list