diff options
Diffstat (limited to 'contrib/mtnpatch.py')
-rwxr-xr-x | contrib/mtnpatch.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/contrib/mtnpatch.py b/contrib/mtnpatch.py new file mode 100755 index 0000000000..73143dba69 --- /dev/null +++ b/contrib/mtnpatch.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +import sys, os, string, getopt, re + +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] == '#': + matches = re.search("#\s+(\w+)\s+\"(.*)\"", line) + if matches is not None: + cmd = matches.group(1) + fileName = matches.group(2) + 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()) |