home *** CD-ROM | disk | FTP | other *** search
- #! /usr/bin/env python
-
- """Print a list of files that are mentioned in CVS directories.
-
- Usage: cvsfiles.py [-n file] [directory] ...
-
- If the '-n file' option is given, only files under CVS that are newer
- than the given file are printed; by default, all files under CVS are
- printed. As a special case, if a file does not exist, it is always
- printed.
- """
-
- import os
- import sys
- import stat
- import getopt
- import string
-
- cutofftime = 0
-
- def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], "n:")
- except getopt.error, msg:
- print msg
- print __doc__,
- return 1
- global cutofftime
- newerfile = None
- for o, a in opts:
- if o == '-n':
- cutofftime = getmtime(a)
- if args:
- for arg in args:
- process(arg)
- else:
- process(".")
-
- def process(dir):
- cvsdir = 0
- subdirs = []
- names = os.listdir(dir)
- for name in names:
- fullname = os.path.join(dir, name)
- if name == "CVS":
- cvsdir = fullname
- else:
- if os.path.isdir(fullname):
- if not os.path.islink(fullname):
- subdirs.append(fullname)
- if cvsdir:
- entries = os.path.join(cvsdir, "Entries")
- for e in open(entries).readlines():
- words = string.split(e, '/')
- if words[0] == '' and words[1:]:
- name = words[1]
- fullname = os.path.join(dir, name)
- if cutofftime and getmtime(fullname) <= cutofftime:
- pass
- else:
- print fullname
- for sub in subdirs:
- process(sub)
-
- def getmtime(filename):
- try:
- st = os.stat(filename)
- except os.error:
- return 0
- return st[stat.ST_MTIME]
-
- sys.exit(main())
-