[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