hgext/convert/cvsps
author Dirkjan Ochtman <dirkjan@ochtman.nl>
Tue, 21 Oct 2008 11:29:27 +0200
changeset 7197 f60730693efc
parent 6689 d2ac53fe216e
permissions -rw-r--r--
help: show extension commands in short list, separate extension list in help In 'hg', we now show a short list of commands, including extension commands. In 'hg help', we show core commands, a list of enabled extensions, and topics.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6689
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     1
#!/usr/bin/env python
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     2
#
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     3
# Commandline front-end for cvsps.py
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     4
#
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     5
# Copyright 2008, Frank Kingswood <frank@kingswood-consulting.co.uk>
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     6
#
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     7
# This software may be used and distributed according to the terms
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     8
# of the GNU General Public License, incorporated herein by reference.
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
     9
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    10
import sys
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    11
from mercurial import util
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    12
from mercurial.i18n import _
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    13
from optparse import OptionParser, SUPPRESS_HELP
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    14
from hgext.convert.cvsps import createlog, createchangeset, logerror
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    15
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    16
def main():
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    17
    '''Main program to mimic cvsps.'''
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    18
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    19
    op = OptionParser(usage='%prog [-bpruvxz] path',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    20
                      description='Read CVS rlog for current directory or named '
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    21
                                  'path in repository, and convert the log to changesets '
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    22
                                  'based on matching commit log entries and dates.')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    23
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    24
    # Options that are ignored for compatibility with cvsps-2.1
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    25
    op.add_option('-A', dest='Ignore', action='store_true', help=SUPPRESS_HELP)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    26
    op.add_option('--cvs-direct', dest='Ignore', action='store_true', help=SUPPRESS_HELP)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    27
    op.add_option('-q', dest='Ignore', action='store_true', help=SUPPRESS_HELP)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    28
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    29
    # Main options shared with cvsps-2.1
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    30
    op.add_option('-b', dest='Branches', action='append', default=[],
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    31
                  help='Only return changes on specified branches')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    32
    op.add_option('-p', dest='Prefix', action='store', default='',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    33
                  help='Prefix to remove from file names')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    34
    op.add_option('-r', dest='Revisions', action='append', default=[],
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    35
                  help='Only return changes after or between specified tags')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    36
    op.add_option('-u', dest='Cache', action='store_const', const='update',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    37
                  help="Update cvs log cache")
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    38
    op.add_option('-v', dest='Verbose', action='count', default=0,
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    39
                  help='Be verbose')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    40
    op.add_option('-x', dest='Cache', action='store_const', const='write',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    41
                  help="Create new cvs log cache")
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    42
    op.add_option('-z', dest='Fuzz', action='store', type='int', default=60,
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    43
                  help='Set commit time fuzz', metavar='seconds')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    44
    op.add_option('--root', dest='Root', action='store', default='',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    45
                  help='Specify cvsroot', metavar='cvsroot')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    46
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    47
    # Options specific to this version
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    48
    op.add_option('--parents', dest='Parents', action='store_true',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    49
                  help='Show parent changesets')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    50
    op.add_option('--ancestors', dest='Ancestors', action='store_true',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    51
                  help='Show current changeset in ancestor branches')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    52
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    53
    options, args = op.parse_args()
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    54
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    55
    # Create a ui object for printing progress messages
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    56
    class UI:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    57
        def __init__(self, verbose):
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    58
            if verbose:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    59
                self.status = self.message
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    60
            if verbose>1:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    61
                self.note = self.message
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    62
            if verbose>2:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    63
                self.debug = self.message
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    64
        def message(self, msg):
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    65
            sys.stderr.write(msg)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    66
        def nomessage(self, msg):
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    67
            pass
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    68
        status = nomessage
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    69
        note = nomessage
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    70
        debug = nomessage
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    71
    ui = UI(options.Verbose)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    72
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    73
    try:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    74
        if args:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    75
            log = []
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    76
            for d in args:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    77
                log += createlog(ui, d, root=options.Root, cache=options.Cache)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    78
        else:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    79
            log = createlog(ui, root=options.Root, cache=options.Cache)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    80
    except logerror, e:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    81
        print e
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    82
        return
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    83
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    84
    changesets = createchangeset(ui, log, options.Fuzz)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    85
    del log
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    86
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    87
    # Print changesets (optionally filtered)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    88
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    89
    off = len(options.Revisions)
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    90
    branches = {}    # latest version number in each branch
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    91
    ancestors = {}   # parent branch
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    92
    for cs in changesets:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    93
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    94
        if options.Ancestors:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    95
            if cs.branch not in branches and cs.parents and cs.parents[0].id:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    96
                ancestors[cs.branch] = changesets[cs.parents[0].id-1].branch, cs.parents[0].id
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    97
            branches[cs.branch] = cs.id
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    98
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
    99
        # limit by branches
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   100
        if options.Branches and (cs.branch or 'HEAD') not in options.Branches:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   101
            continue
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   102
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   103
        if not off:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   104
            # Note: trailing spaces on several lines here are needed to have
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   105
            #       bug-for-bug compatibility with cvsps.
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   106
            print '---------------------'
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   107
            print 'PatchSet %d ' % cs.id
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   108
            print 'Date: %s' % util.datestr(cs.date, '%Y/%m/%d %H:%M:%S %1%2')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   109
            print 'Author: %s' % cs.author
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   110
            print 'Branch: %s' % (cs.branch or 'HEAD')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   111
            print 'Tag%s: %s ' % (['', 's'][len(cs.tags)>1],
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   112
                                  ','.join(cs.tags) or '(none)')
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   113
            if options.Parents and cs.parents:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   114
                if len(cs.parents)>1:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   115
                    print 'Parents: %s' % (','.join([str(p.id) for p in cs.parents]))
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   116
                else:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   117
                    print 'Parent: %d' % cs.parents[0].id
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   118
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   119
            if options.Ancestors:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   120
                b = cs.branch
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   121
                r = []
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   122
                while b:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   123
                    b, c = ancestors[b]
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   124
                    r.append('%s:%d:%d' % (b or "HEAD", c, branches[b]))
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   125
                if r:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   126
                    print 'Ancestors: %s' % (','.join(r))
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   127
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   128
            print 'Log:'
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   129
            print cs.comment
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   130
            print
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   131
            print 'Members: '
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   132
            for f in cs.entries:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   133
                fn = f.file
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   134
                if fn.startswith(options.Prefix):
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   135
                    fn = fn[len(options.Prefix):]
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   136
                print '\t%s:%s->%s%s ' % (fn, '.'.join([str(x) for x in f.parent]) or 'INITIAL',
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   137
                                          '.'.join([str(x) for x in f.revision]), ['', '(DEAD)'][f.dead])
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   138
            print
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   139
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   140
        # have we seen the start tag?
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   141
        if options.Revisions and off:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   142
            if options.Revisions[0] == str(cs.id) or \
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   143
                options.Revisions[0] in cs.tags:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   144
                off = False
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   145
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   146
        # see if we reached the end tag
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   147
        if len(options.Revisions)>1 and not off:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   148
            if options.Revisions[1] == str(cs.id) or \
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   149
                options.Revisions[1] in cs.tags:
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   150
                break
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   151
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   152
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   153
if __name__ == '__main__':
d2ac53fe216e convert: cvsps - User interface to CVS changeset code in cvsps.py
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
   154
    main()