Here's a prototype in Python2 that makes a git repo in a 'shelve' folder.
Two commits - one with the starting position, and one with the ending
position. The 'svn info' for the resource is copied in too (same file name
with a '.info' suffix).
import sh
import os
from stat import S_IWUSR, S_IREAD
import fileinput
sh.rm("-rf", "maven-gpg-plugin")
sh.rm("-rf", "shelve")
sh.svn("co", "https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-gpg-plugin/")
# Change two files.
for line in fileinput.input("maven-gpg-plugin/pom.xml", inplace=True):
print "%d: %s" % (fileinput.filelineno(), line),
for line in fileinput.input("maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/SigningBundle.java",
inplace=True):
print "%d: %s" % (fileinput.filelineno(), line),
# While files changed?
files = sh.svn("st", "maven-gpg-plugin")
sh.mkdir("shelve")
sh.git("init", "shelve")
# Copy originals in.
for line in files.splitlines():
file_name = line[1:].strip()
info = sh.svn("info", file_name)
for iLine in info:
if iLine.startswith("Checksum:"):
checksum = iLine.split(" ")[1].strip()
dir = checksum[0:2]
sh.mkdir("-p", "shelve/" + "/".join(file_name.split('/')[:-1]))
sh.cp("maven-gpg-plugin/.svn/pristine/" + dir + "/" +
checksum + ".svn-base", "shelve/" + file_name)
os.chmod("shelve/" + file_name, S_IWUSR | S_IREAD) #
make writable
f = open("shelve/" + file_name + ".info", 'w')
f.writelines(info)
f.close()
# Do a commit
sh.cd("shelve")
sh.git("add", ".")
sh.git("commit", "-m", "start")
sh.cd("..")
# Copy changed versions in.
for line in files.splitlines():
file_name = line[1:].strip()
sh.cp(file_name, "shelve/" + file_name)
# Do a commit
sh.cd("shelve")
sh.git("add", ".")
sh.git("commit", "-m", "finish")
sh.cd("..")
Received on 2017-08-29 01:21:04 CEST