[Python-checkins] python/dist/src/Tools/scripts logmerge.py,1.8,1.9

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
2002年9月28日 21:37:38 -0700


Update of /cvsroot/python/python/dist/src/Tools/scripts
In directory usw-pr-cvs1:/tmp/cvs-serv15075
Modified Files:
	logmerge.py 
Log Message:
Added -b tag option to limit output to a specific branch only.
Use -b HEAD to limit output to the trunk (skip all branch revisions).
Index: logmerge.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/scripts/logmerge.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** logmerge.py	11 Sep 2002 20:36:01 -0000	1.8
--- logmerge.py	29 Sep 2002 04:37:36 -0000	1.9
***************
*** 20,23 ****
--- 20,32 ----
 probably want everything *since* that tag.
 
+ The -r option reverses the output (oldest first; the default is oldest
+ last).
+ 
+ The -b tag option restricts the output to *only* checkin messages
+ belonging to the given branch tag. The form -b HEAD restricts the
+ output to checkin messages belonging to the CVS head (trunk). (It
+ produces some output if tag is a non-branch tag, but this output is
+ not very useful.)
+ 
 XXX This code was created by reverse engineering CVS 1.9 and RCS 5.7
 from their output.
***************
*** 25,29 ****
 """
 
! import os, sys, getopt, re
 
 sep1 = '='*77 + '\n' # file separator
--- 34,38 ----
 """
 
! import os, sys, getopt
 
 sep1 = '='*77 + '\n' # file separator
***************
*** 34,38 ****
 truncate_last = 0
 reverse = 0
! opts, args = getopt.getopt(sys.argv[1:], "tr")
 for o, a in opts:
 if o == '-t':
--- 43,48 ----
 truncate_last = 0
 reverse = 0
! branch = None
! opts, args = getopt.getopt(sys.argv[1:], "trb:")
 for o, a in opts:
 if o == '-t':
***************
*** 40,43 ****
--- 50,55 ----
 elif o == '-r':
 reverse = 1
+ elif o == '-b':
+ branch = a
 database = []
 while 1:
***************
*** 45,49 ****
 if not chunk:
 break
! records = digest_chunk(chunk)
 if truncate_last:
 del records[-1]
--- 57,61 ----
 if not chunk:
 break
! records = digest_chunk(chunk, branch)
 if truncate_last:
 del records[-1]
***************
*** 78,83 ****
 return chunk
 
! def digest_chunk(chunk):
! """Digest a chunk -- extrach working file name and revisions"""
 lines = chunk[0]
 key = 'Working file:'
--- 90,95 ----
 return chunk
 
! def digest_chunk(chunk, branch=None):
! """Digest a chunk -- extract working file name and revisions"""
 lines = chunk[0]
 key = 'Working file:'
***************
*** 89,92 ****
--- 101,124 ----
 else:
 working_file = None
+ if branch and branch != "HEAD":
+ revisions = {}
+ key = 'symbolic names:\n'
+ found = 0
+ for line in lines:
+ if line == key:
+ found = 1
+ elif found:
+ if line[0] in '\t ':
+ tag, rev = line.split()
+ if tag[-1] == ':':
+ tag = tag[:-1]
+ revisions[tag] = rev
+ else:
+ found = 0
+ rev = revisions.get(branch)
+ if rev:
+ if rev.find('.0.') >= 0:
+ rev = rev.replace('.0.', '.') + '.'
+ branch = rev or "<>" # <> to force a mismatch
 records = []
 for lines in chunk[1:]:
***************
*** 115,118 ****
--- 147,156 ----
 rev = None
 text.insert(0, revline)
+ if branch:
+ if branch == "HEAD":
+ if rev is not None and rev.count('.') > 1:
+ continue
+ elif rev is None or not rev.startswith(branch):
+ continue
 records.append((date, working_file, rev, author, text))
 return records

AltStyle によって変換されたページ (->オリジナル) /