[Zope3-checkins] SVN: Zope3/trunk/utilities/batch- Updated the
batch commit script to be svn-ready.
Philipp von Weitershausen
philikon at philikon.de
Sun May 16 07:24:27 EDT 2004
Log message for revision 24737:
Updated the batch commit script to be svn-ready.
-=-
Deleted: Zope3/trunk/utilities/batch-cvs-commit
===================================================================
--- Zope3/trunk/utilities/batch-cvs-commit 2004-05-16 11:15:55 UTC (rev 24736)
+++ Zope3/trunk/utilities/batch-cvs-commit 2004-05-16 11:24:26 UTC (rev 24737)
@@ -1,139 +0,0 @@
-#! /usr/bin/env python
-"""Helper script for large collections of CVS commits."""
-
-USAGE = """
-Usage:
-
- %(program)s [file]
-
-Perform a set of CVS commits using a listing of filenames and checkin
-comments specified in 'file'. If 'file' is not given or is '-',
-standard input is used.
-
-The input is a series of commit descriptions. Each description is a
-set of status lines as printed by the 'cvs up' command, consisting of
-'A', 'M', and 'R' lines. After each group of status lines, the
-corresponding checkin comment should be written, separated from status
-lines by blank lines.
-
-The normal usage pattern is to generate an input file using the 'cvs
-up' command:
-
- $ cvs up >changes
-
-and then editing the generated file to include checkin comments. A
-short example might look like this:
-
- M src/pkg/foo.py
- R src/pkg/subpkg/utils.py
-
- Replace the foobar helper with an inline implementation; it wasn't
- used anywhere else.
-
- A src/helpers/fastimpl.c
- M setup.py
-
- Add an optimized frobnicator.
-
- Checkin comments can have multiple paragraphs.
-
- M src/app/myalgorithm.py
-
- Use the new optimized frobnicator to get an order of magnitude
- more speed.
-
-This file can then be fed into %(program)s to generate three separate
-commits, one for each different comment.
-
- $ %(program)s <changes
-"""
-
-import getopt
-import os
-import re
-import sys
-import tempfile
-
-paragraph_sep = re.compile(r"(\n\s*)+\n")
-ops = re.compile(r"^([+ARM] [^\n]+\n)+$").match
-qops = re.compile(r"^([+ARM?] [^\n]+\n)+$").match
-
-def main(argv):
-
- try:
- opts, args = getopt.getopt(sys.argv[1:], "h?", ["help"])
- except getopt.GetoptError, e:
- print >>sys.stderr, e
- usage(sys.stderr, 2)
-
- if opts:
- print __doc__.strip()
- usage(sys.stdout, 0)
-
- if len(args) > 1:
- print >>sys.stderr, "too many arguments"
- usage(sys.stderr, 2)
- elif args:
- # read from stdin by default
- f = args[0]
- else:
- f = '-'
-
- if f == '-':
- f = sys.stdin
- else:
- f = open(f)
-
- data = f.read().rstrip()
-
- paragraphs = [(p.strip()+'\n') for p in paragraph_sep.split(data)]
-
- docfilename = tempfile.mktemp()
-
- p = paragraphs.pop(0)
- if not ops(p):
- if qops(p):
- raise "? found in operations!"
- raise "Should start with ops", p
- doc = []
- checkins = [(p, doc)]
- for p in paragraphs:
- if ops(p):
- if not doc:
- raise "No doc for", checkins[-1][0]
- doc = []
- checkins.append((p, doc))
- else:
- if qops(p):
- raise "? found in operations!"
- doc.append(p)
-
- for (p, doc) in checkins:
- for l in p.strip().split('\n'):
- if l[0] == '+':
- command = 'cvs add ' + l[2:]
- print command
- os.system(command)
-
- files_to_commit = ' '.join([l[2:] for l in p.strip().split('\n')])
-
- docfile = open(docfilename, 'w')
- docfile.write('\n'.join(doc))
- docfile.close()
-
- command = 'cvs commit -F %s %s' % (docfilename, files_to_commit)
- print command
- os.system(command)
-
- os.remove(docfilename)
-
-
-def usage(f, rc):
- program = os.path.basename(sys.argv[0])
- message = USAGE % {"program": program}
- print >>f, message
- sys.exit(rc)
-
-
-if __name__ == '__main__':
- main(sys.argv)
Copied: Zope3/trunk/utilities/batch-svn-commit (from rev 24709, Zope3/trunk/utilities/batch-cvs-commit)
===================================================================
--- Zope3/trunk/utilities/batch-cvs-commit 2004-05-15 06:27:46 UTC (rev 24709)
+++ Zope3/trunk/utilities/batch-svn-commit 2004-05-16 11:24:26 UTC (rev 24737)
@@ -0,0 +1,138 @@
+#! /usr/bin/env python
+"""Helper script for large collections of subversion commits."""
+
+USAGE = """
+Usage:
+
+ %(program)s [file]
+
+Perform a set of subversion commits using a listing of filenames and
+checkin comments specified in 'file'. If 'file' is not given or is
+'-', standard input is used.
+
+The input is a series of commit descriptions. Each description is a
+set of status lines as printed by the 'svn status' command, consisting
+of 'A', 'M', and 'R' lines. After each group of status lines, the
+corresponding checkin comment should be written, separated from status
+lines by blank lines.
+
+The normal usage pattern is to generate an input file using the 'svn
+status' command:
+
+ $ svn status >changes
+
+and then editing the generated file to include checkin comments. A
+short example might look like this:
+
+ M src/pkg/foo.py
+ R src/pkg/subpkg/utils.py
+
+ Replace the foobar helper with an inline implementation; it wasn't
+ used anywhere else.
+
+ A src/helpers/fastimpl.c
+ M setup.py
+
+ Add an optimized frobnicator.
+
+ Checkin comments can have multiple paragraphs.
+
+ M src/app/myalgorithm.py
+
+ Use the new optimized frobnicator to get an order of magnitude
+ more speed.
+
+This file can then be fed into %(program)s to generate three separate
+commits, one for each different comment.
+
+ $ %(program)s changes
+"""
+
+import getopt
+import os
+import re
+import sys
+import tempfile
+
+paragraph_sep = re.compile(r"(\n\s*)+\n")
+ops = re.compile(r"^([+ARM] [^\n]+\n)+$").match
+qops = re.compile(r"^([+ARM?] [^\n]+\n)+$").match
+
+def main(argv):
+
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "h?", ["help"])
+ except getopt.GetoptError, e:
+ print >>sys.stderr, e
+ usage(sys.stderr, 2)
+
+ if opts:
+ print __doc__.strip()
+ usage(sys.stdout, 0)
+
+ if len(args) > 1:
+ print >>sys.stderr, "too many arguments"
+ usage(sys.stderr, 2)
+ elif args:
+ # read from stdin by default
+ f = args[0]
+ else:
+ f = '-'
+
+ if f == '-':
+ f = sys.stdin
+ else:
+ f = open(f)
+
+ data = f.read().rstrip()
+ paragraphs = [(p.strip()+'\n') for p in paragraph_sep.split(data)]
+
+ docfilename = tempfile.mktemp()
+
+ p = paragraphs.pop(0)
+ if not ops(p):
+ if qops(p):
+ raise "? found in operations!"
+ raise "Should start with ops", p
+ doc = []
+ checkins = [(p, doc)]
+ for p in paragraphs:
+ if ops(p):
+ if not doc:
+ raise "No doc for", checkins[-1][0]
+ doc = []
+ checkins.append((p, doc))
+ else:
+ if qops(p):
+ raise "? found in operations!"
+ doc.append(p)
+
+ for (p, doc) in checkins:
+ for l in p.strip().split('\n'):
+ if l[0] == '+':
+ command = 'svn add ' + l[2:]
+ print command
+ os.system(command)
+
+ files_to_commit = ' '.join([l[2:] for l in p.strip().split('\n')])
+
+ docfile = open(docfilename, 'w')
+ docfile.write(''.join(doc))
+ docfile.close()
+
+ command = 'svn commit -F %s %s' % (docfilename, files_to_commit)
+ print command
+ os.system(command)
+
+ os.remove(docfilename)
+
+
+def usage(f, rc):
+ program = os.path.basename(sys.argv[0])
+ message = USAGE % {"program": program}
+ print >>f, message
+ sys.exit(rc)
+
+
+if __name__ == '__main__':
+ main(sys.argv)
More information about the Zope3-Checkins
mailing list