From 3cf56093b9d132a5089a70a12feb73c4be987da8 Mon Sep 17 00:00:00 2001 From: Justin Patrin Date: Sat, 3 Jun 2006 18:58:18 +0000 Subject: Add mtnpatch.py, a script to parse and import a full monotone diff --- contrib/mtnpatch.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 contrib/mtnpatch.py (limited to 'contrib') diff --git a/contrib/mtnpatch.py b/contrib/mtnpatch.py new file mode 100644 index 0000000000..520ebfaff0 --- /dev/null +++ b/contrib/mtnpatch.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +import sys, os, string, getopt + +mtncmd = "monotone" + +def main(argv = None): + if argv is None: + argv = sys.argv + opts, list = getopt.getopt(sys.argv[1:], ':R') + if len(list) < 1: + print "You must specify a file" + return 2 + reverse = False + for o, a in opts: + if o == "-R": + reverse = True + if os.path.exists(list[0]): + input = open(list[0], 'r') + renameFrom = "" + cmd = "" + if reverse: + print "patch -R -p0 < %s" % list[0] + else: + print "patch -p0 < %s" % list[0] + for line in input: + if len(line) > 0: + if line[0] == '#': + parts = line.split() + if len(parts) > 2: + cmd = parts[1] + # deal with whilespace in filenames (badly) + fileName = parts[2] + i = 3 + while i < len(parts) and fileName.count('"') % 2: + fileName += " %s" % parts[i] + if cmd == "delete_file": + if reverse: + print "%s add %s" % (mtncmd, fileName) + else: + print "%s drop -e %s" % (mtncmd, fileName) + elif cmd == "add_file": + if reverse: + print "%s drop -e %s" % (mtncmd, fileName) + else: + print "%s add %s" % (mtncmd, fileName) + elif cmd == "rename_file": + renameFrom = fileName + elif cmd == "to" and renameFrom != "": + if reverse: + print "%s rename -e %s %s" % (mtncmd, fileName, renameFrom) + else: + print "%s rename -e %s %s" % (mtncmd, renameFrom, fileName) + renameFrom = "" + else: + cmd = "" + +if __name__ == "__main__": + sys.exit(main()) -- cgit v1.2.3