annotate hgext/convert/cvsps.py @ 48946:642e31cb55f0

py3: use class X: instead of class X(object): The inheritance from object is implied in Python 3. So this should be equivalent. This change was generated via an automated search and replace. So there may have been some accidental changes. Differential Revision: https://phab.mercurial-scm.org/D12352
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 21 Feb 2022 13:08:28 -0700
parents f254fc73d956
children d44e3c45f0e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
1 # Mercurial built-in replacement for cvsps.
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
2 #
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
3 # Copyright 2008, Frank Kingswood <frank@kingswood-consulting.co.uk>
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
4 #
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 8209
diff changeset
5 # This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 9467
diff changeset
6 # GNU General Public License version 2 or any later version.
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
7
37886
fe148d7544a4 cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key
Augie Fackler <augie@google.com>
parents: 37884
diff changeset
8 import functools
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
9 import os
48870
df56e6bd37f6 py3: use pickle directly
Gregory Szorc <gregory.szorc@gmail.com>
parents: 45942
diff changeset
10 import pickle
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
11 import re
28369
71176606fa0a convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents: 26593
diff changeset
12
29205
a0939666b836 py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents: 28369
diff changeset
13 from mercurial.i18n import _
43085
eef9a2d67051 py3: manually import pycompat.open into files that need it
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43080
diff changeset
14 from mercurial.pycompat import open
28369
71176606fa0a convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents: 26593
diff changeset
15 from mercurial import (
30638
1c5cbf28f007 py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30616
diff changeset
16 encoding,
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
17 error,
28369
71176606fa0a convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents: 26593
diff changeset
18 hook,
30616
6f9fcd29e290 py3: replace os.sep with pycompat.ossep (part 4 of 4)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29324
diff changeset
19 pycompat,
28369
71176606fa0a convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents: 26593
diff changeset
20 util,
71176606fa0a convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents: 26593
diff changeset
21 )
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 36607
diff changeset
22 from mercurial.utils import (
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 36607
diff changeset
23 dateutil,
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
24 procutil,
37084
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 36607
diff changeset
25 stringutil,
f0b6fbea00cf stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 36607
diff changeset
26 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
27
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
28
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48913
diff changeset
29 class logentry:
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
30 """Class logentry has the following attributes:
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
31 .author - author name as CVS knows it
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
32 .branch - name of branch this revision is on
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
33 .branches - revision tuple of branches starting at this revision
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
34 .comment - commit message
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
35 .commitid - CVS commitid or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
36 .date - the commit date as a (time, tz) tuple
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
37 .dead - true if file revision is dead
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
38 .file - Name of file
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
39 .lines - a tuple (+lines, -lines) or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
40 .parent - Previous revision of this entry
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
41 .rcs - name of file as returned from CVS
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
42 .revision - revision number as tuple
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
43 .tags - list of tags on the file
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
44 .synthetic - is this a synthetic "file ... added on ..." revision?
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
45 .mergepoint - the branch that has been merged from (if present in
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
46 rlog output) or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
47 .branchpoints - the branches that start at the current entry or empty
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
48 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
49
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
50 def __init__(self, **entries):
10701
35893dcfd40c cvsps: fix traceback involving 'synthetic'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10695
diff changeset
51 self.synthetic = False
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
52 self.__dict__.update(entries)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
53
8080
19229b0b292d cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents: 8079
diff changeset
54 def __repr__(self):
43503
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43117
diff changeset
55 items = ("%s=%r" % (k, self.__dict__[k]) for k in sorted(self.__dict__))
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43117
diff changeset
56 return "%s(%s)" % (type(self).__name__, ", ".join(items))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
57
8080
19229b0b292d cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents: 8079
diff changeset
58
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
59 class logerror(Exception):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
60 pass
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
61
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
62
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
63 def getrepopath(cvspath):
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
64 """Return the repository path from a CVS path.
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
65
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
66 >>> getrepopath(b'/foo/bar')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
67 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
68 >>> getrepopath(b'c:/foo/bar')
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
69 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
70 >>> getrepopath(b':pserver:10/foo/bar')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
71 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
72 >>> getrepopath(b':pserver:10c:/foo/bar')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
73 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
74 >>> getrepopath(b':pserver:/foo/bar')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
75 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
76 >>> getrepopath(b':pserver:c:/foo/bar')
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
77 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
78 >>> getrepopath(b':pserver:truc@foo.bar:/foo/bar')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
79 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
80 >>> getrepopath(b':pserver:truc@foo.bar:c:/foo/bar')
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
81 '/foo/bar'
34131
0fa781320203 doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 33388
diff changeset
82 >>> getrepopath(b'user@server/path/to/repository')
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
83 '/path/to/repository'
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
84 """
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
85 # According to CVS manual, CVS paths are expressed like:
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
86 # [:method:][[user][:password]@]hostname[:[port]]/path/to/repository
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
87 #
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
88 # CVSpath is splitted into parts and then position of the first occurrence
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
89 # of the '/' char after the '@' is located. The solution is the rest of the
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
90 # string after that '/' sign including it
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
91
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
92 parts = cvspath.split(b':')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
93 atposition = parts[-1].find(b'@')
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
94 start = 0
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
95
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
96 if atposition != -1:
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
97 start = atposition
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
98
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
99 repopath = parts[-1][parts[-1].find(b'/', start) :]
19145
0a12e5f3a979 convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents: 18718
diff changeset
100 return repopath
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
101
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
102
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
103 def createlog(ui, directory=None, root=b"", rlog=True, cache=None):
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
104 '''Collect the CVS rlog'''
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
105
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
106 # Because we store many duplicate commit log messages, reusing strings
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
107 # saves a lot of memory and pickle storage space.
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
108 _scache = {}
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
109
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
110 def scache(s):
43787
be8552f25cab cleanup: fix docstring formatting
Matt Harbison <matt_harbison@yahoo.com>
parents: 43503
diff changeset
111 """return a shared version of a string"""
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
112 return _scache.setdefault(s, s)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
113
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
114 ui.status(_(b'collecting CVS rlog\n'))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
115
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
116 log = [] # list of logentry objects containing the CVS state
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
117
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
118 # patterns to match in CVS (r)log output, by state of use
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
119 re_00 = re.compile(b'RCS file: (.+)$')
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
120 re_01 = re.compile(b'cvs \\[r?log aborted\\]: (.+)$')
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
121 re_02 = re.compile(b'cvs (r?log|server): (.+)\n$')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
122 re_03 = re.compile(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43105
diff changeset
123 b"(Cannot access.+CVSROOT)|(can't create temporary directory.+)$"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
124 )
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
125 re_10 = re.compile(b'Working file: (.+)$')
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
126 re_20 = re.compile(b'symbolic names:')
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
127 re_30 = re.compile(b'\t(.+): ([\\d.]+)$')
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
128 re_31 = re.compile(b'----------------------------$')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
129 re_32 = re.compile(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
130 b'======================================='
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
131 b'======================================$'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
132 )
41532
bd3f03d8cc9f global: use raw strings for regular expressions with escapes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38783
diff changeset
133 re_50 = re.compile(br'revision ([\d.]+)(\s+locked by:\s+.+;)?$')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
134 re_60 = re.compile(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
135 br'date:\s+(.+);\s+author:\s+(.+);\s+state:\s+(.+?);'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
136 br'(\s+lines:\s+(\+\d+)?\s+(-\d+)?;)?'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
137 br'(\s+commitid:\s+([^;]+);)?'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
138 br'(.*mergepoint:\s+([^;]+);)?'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
139 )
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
140 re_70 = re.compile(b'branches: (.+);$')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
141
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
142 file_added_re = re.compile(br'file [^/]+ was (initially )?added on branch')
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
143
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
144 prefix = b'' # leading path to strip of what we get from CVS
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
145
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
146 if directory is None:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
147 # Current working directory
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
148
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
149 # Get the real directory in the repository
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
150 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
151 with open(os.path.join(b'CVS', b'Repository'), b'rb') as f:
43052
3b8a4587a456 cvsps: switch a file open to a with statement
Augie Fackler <augie@google.com>
parents: 41759
diff changeset
152 prefix = f.read().strip()
10695
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
153 directory = prefix
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
154 if prefix == b".":
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
155 prefix = b""
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
156 except IOError:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
157 raise logerror(_(b'not a CVS sandbox'))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
158
30616
6f9fcd29e290 py3: replace os.sep with pycompat.ossep (part 4 of 4)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29324
diff changeset
159 if prefix and not prefix.endswith(pycompat.ossep):
6f9fcd29e290 py3: replace os.sep with pycompat.ossep (part 4 of 4)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29324
diff changeset
160 prefix += pycompat.ossep
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
161
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
162 # Use the Root file in the sandbox, if it exists
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
163 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
164 root = open(os.path.join(b'CVS', b'Root'), b'rb').read().strip()
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
165 except IOError:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
166 pass
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
167
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
168 if not root:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
169 root = encoding.environ.get(b'CVSROOT', b'')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
170
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
171 # read log cache if one exists
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
172 oldlog = []
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
173 date = None
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
174
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
175 if cache:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
176 cachedir = os.path.expanduser(b'~/.hg.cvsps')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
177 if not os.path.exists(cachedir):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
178 os.mkdir(cachedir)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
179
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
180 # The cvsps cache pickle needs a uniquified name, based on the
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
181 # repository location. The address may have all sort of nasties
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
182 # in it, slashes, colons and such. So here we take just the
17424
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 16688
diff changeset
183 # alphanumeric characters, concatenated in a way that does not
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 16688
diff changeset
184 # mix up the various components, so that
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
185 # :pserver:user@server:/path
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
186 # and
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
187 # /pserver/user/server/path
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
188 # are mapped to different cache file names.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
189 cachefile = root.split(b":") + [directory, b"cache"]
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
190 cachefile = [b'-'.join(re.findall(br'\w+', s)) for s in cachefile if s]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
191 cachefile = os.path.join(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
192 cachedir, b'.'.join([s for s in cachefile if s])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
193 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
194
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
195 if cache == b'update':
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
196 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
197 ui.note(_(b'reading cvs log cache %s\n') % cachefile)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
198 oldlog = pickle.load(open(cachefile, b'rb'))
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
199 for e in oldlog:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
200 if not (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
201 util.safehasattr(e, b'branchpoints')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
202 and util.safehasattr(e, b'commitid')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
203 and util.safehasattr(e, b'mergepoint')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
204 ):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
205 ui.status(_(b'ignoring old cache\n'))
18286
762f12b8ebae cvsps: fix indentation
Idan Kamara <idankk86@gmail.com>
parents: 18265
diff changeset
206 oldlog = []
762f12b8ebae cvsps: fix indentation
Idan Kamara <idankk86@gmail.com>
parents: 18265
diff changeset
207 break
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
208
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
209 ui.note(_(b'cache has %d log entries\n') % len(oldlog))
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24305
diff changeset
210 except Exception as e:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
211 ui.note(_(b'error reading cache: %r\n') % e)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
212
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
213 if oldlog:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
214 date = oldlog[-1].date # last commit date as a (time,tz) tuple
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
215 date = dateutil.datestr(date, b'%Y/%m/%d %H:%M:%S %1%2')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
216
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
217 # build the CVS commandline
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
218 cmd = [b'cvs', b'-q']
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
219 if root:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
220 cmd.append(b'-d%s' % root)
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
221 p = util.normpath(getrepopath(root))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
222 if not p.endswith(b'/'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
223 p += b'/'
10695
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
224 if prefix:
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
225 # looks like normpath replaces "" by "."
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
226 prefix = p + util.normpath(prefix)
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
227 else:
b4b16e90712f convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents: 10282
diff changeset
228 prefix = p
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
229 cmd.append([b'log', b'rlog'][rlog])
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
230 if date:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
231 # no space between option and date string
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
232 cmd.append(b'-d>%s' % date)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
233 cmd.append(directory)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
234
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
235 # state machine begins here
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
236 tags = {} # dictionary of revisions on current file with their tags
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
237 branchmap = {} # mapping between branch names and revision numbers
26593
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
238 rcsmap = {}
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
239 state = 0
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
240 store = False # set when a new record can be appended
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
241
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 37084
diff changeset
242 cmd = [procutil.shellquote(arg) for arg in cmd]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
243 ui.note(_(b"running %s\n") % (b' '.join(cmd)))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
244 ui.debug(b"prefix=%r directory=%r root=%r\n" % (prefix, directory, root))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
245
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
246 pfp = procutil.popen(b' '.join(cmd), b'rb')
37458
00e4bd97b095 procutil: always popen() in binary mode
Yuya Nishihara <yuya@tcha.org>
parents: 37120
diff changeset
247 peek = util.fromnativeeol(pfp.readline())
7593
9811cc670c51 cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents: 7573
diff changeset
248 while True:
9811cc670c51 cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents: 7573
diff changeset
249 line = peek
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
250 if line == b'':
7593
9811cc670c51 cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents: 7573
diff changeset
251 break
37458
00e4bd97b095 procutil: always popen() in binary mode
Yuya Nishihara <yuya@tcha.org>
parents: 37120
diff changeset
252 peek = util.fromnativeeol(pfp.readline())
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
253 if line.endswith(b'\n'):
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
254 line = line[:-1]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
255 # ui.debug('state=%d line=%r\n' % (state, line))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
256
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
257 if state == 0:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
258 # initial state, consume input until we see 'RCS file'
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
259 match = re_00.match(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
260 if match:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
261 rcs = match.group(1)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
262 tags = {}
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
263 if rlog:
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
264 filename = util.normpath(rcs[:-2])
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
265 if filename.startswith(prefix):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
266 filename = filename[len(prefix) :]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
267 if filename.startswith(b'/'):
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
268 filename = filename[1:]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
269 if filename.startswith(b'Attic/'):
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
270 filename = filename[6:]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
271 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
272 filename = filename.replace(b'/Attic/', b'/')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
273 state = 2
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
274 continue
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
275 state = 1
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
276 continue
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
277 match = re_01.match(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
278 if match:
11122
2114e44b08f6 clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents: 10950
diff changeset
279 raise logerror(match.group(1))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
280 match = re_02.match(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
281 if match:
11122
2114e44b08f6 clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents: 10950
diff changeset
282 raise logerror(match.group(2))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
283 if re_03.match(line):
11122
2114e44b08f6 clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents: 10950
diff changeset
284 raise logerror(line)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
285
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
286 elif state == 1:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
287 # expect 'Working file' (only when using log instead of rlog)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
288 match = re_10.match(line)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
289 assert match, _(b'RCS file must be followed by working file')
7097
d4218edd55bd convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents: 6956
diff changeset
290 filename = util.normpath(match.group(1))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
291 state = 2
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
292
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
293 elif state == 2:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
294 # expect 'symbolic names'
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
295 if re_20.match(line):
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
296 branchmap = {}
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
297 state = 3
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
298
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
299 elif state == 3:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
300 # read the symbolic names and store as tags
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
301 match = re_30.match(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
302 if match:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
303 rev = [int(x) for x in match.group(2).split(b'.')]
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
304
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
305 # Convert magic branch number to an odd-numbered one
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
306 revn = len(rev)
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
307 if revn > 3 and (revn % 2) == 0 and rev[-2] == 0:
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
308 rev = rev[:-2] + rev[-1:]
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
309 rev = tuple(rev)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
310
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
311 if rev not in tags:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
312 tags[rev] = []
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
313 tags[rev].append(match.group(1))
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
314 branchmap[match.group(1)] = match.group(2)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
315
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
316 elif re_31.match(line):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
317 state = 5
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
318 elif re_32.match(line):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
319 state = 0
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
320
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
321 elif state == 4:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
322 # expecting '------' separator before first revision
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
323 if re_31.match(line):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
324 state = 5
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
325 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
326 assert not re_32.match(line), _(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43105
diff changeset
327 b'must have at least some revisions'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
328 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
329
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
330 elif state == 5:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
331 # expecting revision number and possibly (ignored) lock indication
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
332 # we create the logentry here from values stored in states 0 to 4,
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
333 # as this state is re-entered for subsequent revisions of a file.
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
334 match = re_50.match(line)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
335 assert match, _(b'expected revision number')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
336 e = logentry(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
337 rcs=scache(rcs),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
338 file=scache(filename),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
339 revision=tuple([int(x) for x in match.group(1).split(b'.')]),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
340 branches=[],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
341 parent=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
342 commitid=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
343 mergepoint=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
344 branchpoints=set(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
345 )
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
346
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
347 state = 6
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
348
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
349 elif state == 6:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
350 # expecting date, author, state, lines changed
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
351 match = re_60.match(line)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
352 assert match, _(b'revision must be followed by date line')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
353 d = match.group(1)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
354 if d[2] == b'/':
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
355 # Y2K
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
356 d = b'19' + d
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
357
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
358 if len(d.split()) != 3:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
359 # cvs log dates always in GMT
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
360 d = d + b' UTC'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
361 e.date = dateutil.parsedate(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
362 d,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
363 [
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
364 b'%y/%m/%d %H:%M:%S',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
365 b'%Y/%m/%d %H:%M:%S',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
366 b'%Y-%m-%d %H:%M:%S',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
367 ],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
368 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
369 e.author = scache(match.group(2))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
370 e.dead = match.group(3).lower() == b'dead'
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
371
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
372 if match.group(5):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
373 if match.group(6):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
374 e.lines = (int(match.group(5)), int(match.group(6)))
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
375 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
376 e.lines = (int(match.group(5)), 0)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
377 elif match.group(6):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
378 e.lines = (0, int(match.group(6)))
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
379 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
380 e.lines = None
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
381
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
382 if match.group(7): # cvs 1.12 commitid
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
383 e.commitid = match.group(8)
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
384
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
385 if match.group(9): # cvsnt mergepoint
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
386 myrev = match.group(10).split(b'.')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
387 if len(myrev) == 2: # head
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
388 e.mergepoint = b'HEAD'
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
389 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
390 myrev = b'.'.join(myrev[:-2] + [b'0', myrev[-2]])
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
391 branches = [b for b in branchmap if branchmap[b] == myrev]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
392 assert len(branches) == 1, (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
393 b'unknown branch: %s' % e.mergepoint
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
394 )
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
395 e.mergepoint = branches[0]
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
396
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
397 e.comment = []
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
398 state = 7
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
399
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
400 elif state == 7:
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
401 # read the revision numbers of branches that start at this revision
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
402 # or store the commit log message otherwise
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
403 m = re_70.match(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
404 if m:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
405 e.branches = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
406 tuple([int(y) for y in x.strip().split(b'.')])
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
407 for x in m.group(1).split(b';')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
408 ]
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
409 state = 8
7593
9811cc670c51 cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents: 7573
diff changeset
410 elif re_31.match(line) and re_50.match(peek):
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
411 state = 5
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
412 store = True
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
413 elif re_32.match(line):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
414 state = 0
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
415 store = True
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
416 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
417 e.comment.append(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
418
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
419 elif state == 8:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
420 # store commit log message
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
421 if re_31.match(line):
15205
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
422 cpeek = peek
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
423 if cpeek.endswith(b'\n'):
15205
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
424 cpeek = cpeek[:-1]
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
425 if re_50.match(cpeek):
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
426 state = 5
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
427 store = True
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
428 else:
4e5b7d130e76 convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents: 14945
diff changeset
429 e.comment.append(line)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
430 elif re_32.match(line):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
431 state = 0
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
432 store = True
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
433 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
434 e.comment.append(line)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
435
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
436 # When a file is added on a branch B1, CVS creates a synthetic
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
437 # dead trunk revision 1.1 so that the branch has a root.
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
438 # Likewise, if you merge such a file to a later branch B2 (one
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
439 # that already existed when the file was added on B1), CVS
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
440 # creates a synthetic dead revision 1.1.x.1 on B2. Don't drop
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
441 # these revisions now, but mark them synthetic so
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
442 # createchangeset() can take care of them.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
443 if (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
444 store
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
445 and e.dead
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
446 and e.revision[-1] == 1
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
447 and len(e.comment) == 1 # 1.1 or 1.1.x.1
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
448 and file_added_re.match(e.comment[0])
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
449 ):
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
450 ui.debug(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
451 b'found synthetic revision in %s: %r\n' % (e.rcs, e.comment[0])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
452 )
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
453 e.synthetic = True
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
454
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
455 if store:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
456 # clean up the results and save in the log.
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
457 store = False
8209
a1a5a57efe90 replace util.sort with sorted built-in
Matt Mackall <mpm@selenic.com>
parents: 8171
diff changeset
458 e.tags = sorted([scache(x) for x in tags.get(e.revision, [])])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
459 e.comment = scache(b'\n'.join(e.comment))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
460
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
461 revn = len(e.revision)
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
462 if revn > 3 and (revn % 2) == 0:
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
463 e.branch = tags.get(e.revision[:-1], [None])[0]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
464 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
465 e.branch = None
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
466
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
467 # find the branches starting from this revision
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
468 branchpoints = set()
48913
f254fc73d956 global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
469 for branch, revision in branchmap.items():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
470 revparts = tuple([int(i) for i in revision.split(b'.')])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
471 if len(revparts) < 2: # bad tags
10950
278d45703ac2 cvs: skip bad tags
Brandon Parsons <parsonsb@rsn.hp.com>
parents: 10939
diff changeset
472 continue
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
473 if revparts[-2] == 0 and revparts[-1] % 2 == 0:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
474 # normal branch
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
475 if revparts[:-2] == e.revision:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
476 branchpoints.add(branch)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
477 elif revparts == (1, 1, 1): # vendor branch
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
478 if revparts in e.branches:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
479 branchpoints.add(branch)
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
480 e.branchpoints = branchpoints
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
481
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
482 log.append(e)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
483
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
484 rcsmap[e.rcs.replace(b'/Attic/', b'/')] = e.rcs
26593
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
485
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
486 if len(log) % 100 == 0:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
487 ui.status(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
488 stringutil.ellipsis(b'%d %s' % (len(log), e.file), 80)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
489 + b'\n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
490 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
491
9032
1fa80c5428b8 compat: use 'key' argument instead of 'cmp' when sorting a list
Alejandro Santos <alejolp@alejolp.com>
parents: 9031
diff changeset
492 log.sort(key=lambda x: (x.rcs, x.revision))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
493
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
494 # find parent revisions of individual files
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
495 versions = {}
26593
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
496 for e in sorted(oldlog, key=lambda x: (x.rcs, x.revision)):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
497 rcs = e.rcs.replace(b'/Attic/', b'/')
26593
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
498 if rcs in rcsmap:
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
499 e.rcs = rcsmap[rcs]
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
500 branch = e.revision[:-1]
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
501 versions[(e.rcs, branch)] = e.revision
c60dfcc0abf2 cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents: 25660
diff changeset
502
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
503 for e in log:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
504 branch = e.revision[:-1]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
505 p = versions.get((e.rcs, branch), None)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
506 if p is None:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
507 p = e.revision[:-2]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
508 e.parent = p
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
509 versions[(e.rcs, branch)] = e.revision
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
510
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
511 # update the log cache
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
512 if cache:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
513 if log:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
514 # join up the old and new logs
9032
1fa80c5428b8 compat: use 'key' argument instead of 'cmp' when sorting a list
Alejandro Santos <alejolp@alejolp.com>
parents: 9031
diff changeset
515 log.sort(key=lambda x: x.date)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
516
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
517 if oldlog and oldlog[-1].date >= log[0].date:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
518 raise logerror(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
519 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
520 b'log cache overlaps with new log entries,'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
521 b' re-run without cache.'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
522 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
523 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
524
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
525 log = oldlog + log
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
526
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
527 # write the new cachefile
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
528 ui.note(_(b'writing cvs log cache %s\n') % cachefile)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
529 pickle.dump(log, open(cachefile, b'wb'))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
530 else:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
531 log = oldlog
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
532
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
533 ui.status(_(b'%d log entries\n') % len(log))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
534
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
535 encodings = ui.configlist(b'convert', b'cvsps.logencoding')
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
536 if encodings:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
537
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
538 def revstr(r):
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
539 # this is needed, because logentry.revision is a tuple of "int"
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
540 # (e.g. (1, 2) for "1.2")
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
541 return b'.'.join(pycompat.maplist(pycompat.bytestr, r))
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
542
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
543 for entry in log:
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
544 comment = entry.comment
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
545 for e in encodings:
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
546 try:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
547 entry.comment = comment.decode(pycompat.sysstr(e)).encode(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
548 'utf-8'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
549 )
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
550 if ui.debugflag:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
551 ui.debug(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
552 b"transcoding by %s: %s of %s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
553 % (e, revstr(entry.revision), entry.file)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
554 )
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
555 break
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
556 except UnicodeDecodeError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
557 pass # try next encoding
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
558 except LookupError as inst: # unknown encoding, maybe
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
559 raise error.Abort(
45681
a736ab681b78 errors: stop passing non-strings to Abort's constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 43787
diff changeset
560 pycompat.bytestr(inst),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
561 hint=_(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43105
diff changeset
562 b'check convert.cvsps.logencoding configuration'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
563 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
564 )
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
565 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
566 raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
567 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
568 b"no encoding can transcode"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
569 b" CVS log message for %s of %s"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
570 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
571 % (revstr(entry.revision), entry.file),
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43105
diff changeset
572 hint=_(b'check convert.cvsps.logencoding configuration'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
573 )
33388
0823f0983eaa convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 31408
diff changeset
574
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
575 hook.hook(ui, None, b"cvslog", True, log=log)
10095
69ce7a10e593 convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 9467
diff changeset
576
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
577 return log
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
578
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
579
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48913
diff changeset
580 class changeset:
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
581 """Class changeset has the following attributes:
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
582 .id - integer identifying this changeset (list index)
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
583 .author - author name as CVS knows it
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
584 .branch - name of branch this changeset is on, or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
585 .comment - commit message
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
586 .commitid - CVS commitid or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
587 .date - the commit date as a (time,tz) tuple
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
588 .entries - list of logentry objects in this changeset
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
589 .parents - list of one or two parent changesets
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
590 .tags - list of tags on this changeset
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
591 .synthetic - from synthetic revision "file ... added on branch ..."
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
592 .mergepoint- the branch that has been merged from or None
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
593 .branchpoints- the branches that start at the current entry or empty
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
594 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
595
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
596 def __init__(self, **entries):
19505
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
597 self.id = None
10701
35893dcfd40c cvsps: fix traceback involving 'synthetic'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10695
diff changeset
598 self.synthetic = False
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
599 self.__dict__.update(entries)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
600
8080
19229b0b292d cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents: 8079
diff changeset
601 def __repr__(self):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
602 items = (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
603 b"%s=%r" % (k, self.__dict__[k]) for k in sorted(self.__dict__)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
604 )
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
605 return b"%s(%s)" % (type(self).__name__, b", ".join(items))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
606
8080
19229b0b292d cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents: 8079
diff changeset
607
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
608 def createchangeset(ui, log, fuzz=60, mergefrom=None, mergeto=None):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
609 '''Convert log into changesets.'''
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
610
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
611 ui.status(_(b'creating changesets\n'))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
612
18718
c8c3887a24c1 convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents: 18375
diff changeset
613 # try to order commitids by date
c8c3887a24c1 convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents: 18375
diff changeset
614 mindate = {}
c8c3887a24c1 convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents: 18375
diff changeset
615 for e in log:
c8c3887a24c1 convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents: 18375
diff changeset
616 if e.commitid:
38294
80f6e95fac2d cvsps: avoid comparison between None and a tuple in date sorting
Augie Fackler <augie@google.com>
parents: 37918
diff changeset
617 if e.commitid not in mindate:
80f6e95fac2d cvsps: avoid comparison between None and a tuple in date sorting
Augie Fackler <augie@google.com>
parents: 37918
diff changeset
618 mindate[e.commitid] = e.date
80f6e95fac2d cvsps: avoid comparison between None and a tuple in date sorting
Augie Fackler <augie@google.com>
parents: 37918
diff changeset
619 else:
80f6e95fac2d cvsps: avoid comparison between None and a tuple in date sorting
Augie Fackler <augie@google.com>
parents: 37918
diff changeset
620 mindate[e.commitid] = min(e.date, mindate[e.commitid])
18718
c8c3887a24c1 convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents: 18375
diff changeset
621
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
622 # Merge changesets
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
623 log.sort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
624 key=lambda x: (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
625 mindate.get(x.commitid, (-1, 0)),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
626 x.commitid or b'',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
627 x.comment,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
628 x.author,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
629 x.branch or b'',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
630 x.date,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
631 x.branchpoints,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
632 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
633 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
634
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
635 changesets = []
8456
e9e2a2c9b294 convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8225
diff changeset
636 files = set()
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
637 c = None
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
638 for i, e in enumerate(log):
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
639
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
640 # Check if log entry belongs to the current changeset or not.
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
641
17424
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 16688
diff changeset
642 # Since CVS is file-centric, two different file revisions with
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
643 # different branchpoints should be treated as belonging to two
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
644 # different changesets (and the ordering is important and not
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
645 # honoured by cvsps at this point).
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
646 #
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
647 # Consider the following case:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
648 # foo 1.1 branchpoints: [MYBRANCH]
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
649 # bar 1.1 branchpoints: [MYBRANCH, MYBRANCH2]
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
650 #
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
651 # Here foo is part only of MYBRANCH, but not MYBRANCH2, e.g. a
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
652 # later version of foo may be in MYBRANCH2, so foo should be the
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
653 # first changeset and bar the next and MYBRANCH and MYBRANCH2
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
654 # should both start off of the bar changeset. No provisions are
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
655 # made to ensure that this is, in fact, what happens.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
656 if not (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
657 c
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
658 and e.branchpoints == c.branchpoints
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
659 and ( # cvs commitids
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
660 (e.commitid is not None and e.commitid == c.commitid)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
661 or ( # no commitids, use fuzzy commit detection
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
662 (e.commitid is None or c.commitid is None)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
663 and e.comment == c.comment
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
664 and e.author == c.author
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
665 and e.branch == c.branch
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
666 and (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
667 (c.date[0] + c.date[1])
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
668 <= (e.date[0] + e.date[1])
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
669 <= (c.date[0] + c.date[1]) + fuzz
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
670 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
671 and e.file not in files
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
672 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
673 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
674 ):
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
675 c = changeset(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
676 comment=e.comment,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
677 author=e.author,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
678 branch=e.branch,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
679 date=e.date,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
680 entries=[],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
681 mergepoint=e.mergepoint,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
682 branchpoints=e.branchpoints,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
683 commitid=e.commitid,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
684 )
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
685 changesets.append(c)
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
686
8456
e9e2a2c9b294 convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8225
diff changeset
687 files = set()
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
688 if len(changesets) % 100 == 0:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
689 t = b'%d %s' % (len(changesets), repr(e.comment)[1:-1])
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
690 ui.status(stringutil.ellipsis(t, 80) + b'\n')
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
691
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
692 c.entries.append(e)
8456
e9e2a2c9b294 convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8225
diff changeset
693 files.add(e.file)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
694 c.date = e.date # changeset date is date of latest commit in it
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
695
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
696 # Mark synthetic changesets
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
697
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
698 for c in changesets:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
699 # Synthetic revisions always get their own changeset, because
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
700 # the log message includes the filename. E.g. if you add file3
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
701 # and file4 on a branch, you get four log entries and three
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
702 # changesets:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
703 # "File file3 was added on branch ..." (synthetic, 1 entry)
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
704 # "File file4 was added on branch ..." (synthetic, 1 entry)
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
705 # "Add file3 and file4 to fix ..." (real, 2 entries)
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
706 # Hence the check for 1 entry here.
10701
35893dcfd40c cvsps: fix traceback involving 'synthetic'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10695
diff changeset
707 c.synthetic = len(c.entries) == 1 and c.entries[0].synthetic
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
708
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
709 # Sort files in each changeset
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
710
15790
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
711 def entitycompare(l, r):
43787
be8552f25cab cleanup: fix docstring formatting
Matt Harbison <matt_harbison@yahoo.com>
parents: 43503
diff changeset
712 """Mimic cvsps sorting order"""
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
713 l = l.file.split(b'/')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
714 r = r.file.split(b'/')
15790
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
715 nl = len(l)
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
716 nr = len(r)
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
717 n = min(nl, nr)
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
718 for i in range(n):
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
719 if i + 1 == nl and nl < nr:
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
720 return -1
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
721 elif i + 1 == nr and nl > nr:
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
722 return +1
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
723 elif l[i] < r[i]:
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
724 return -1
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
725 elif l[i] > r[i]:
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
726 return +1
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
727 return 0
52f816b40674 cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents: 15205
diff changeset
728
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
729 for c in changesets:
37886
fe148d7544a4 cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key
Augie Fackler <augie@google.com>
parents: 37884
diff changeset
730 c.entries.sort(key=functools.cmp_to_key(entitycompare))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
731
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
732 # Sort changesets by date
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
733
19505
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
734 odd = set()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
735
31408
6e3c79bc9a35 convert: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30638
diff changeset
736 def cscmp(l, r):
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
737 d = sum(l.date) - sum(r.date)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
738 if d:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
739 return d
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
740
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
741 # detect vendor branches and initial commits on a branch
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
742 le = {}
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
743 for e in l.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
744 le[e.rcs] = e.revision
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
745 re = {}
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
746 for e in r.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
747 re[e.rcs] = e.revision
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
748
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
749 d = 0
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
750 for e in l.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
751 if re.get(e.rcs, None) == e.parent:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
752 assert not d
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
753 d = 1
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
754 break
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
755
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
756 for e in r.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
757 if le.get(e.rcs, None) == e.parent:
19505
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
758 if d:
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
759 odd.add((l, r))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
760 d = -1
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
761 break
22267
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
762 # By this point, the changesets are sufficiently compared that
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
763 # we don't really care about ordering. However, this leaves
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
764 # some race conditions in the tests, so we compare on the
24305
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
765 # number of files modified, the files contained in each
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
766 # changeset, and the branchpoints in the change to ensure test
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
767 # output remains stable.
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
768
22267
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
769 # recommended replacement for cmp from
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
770 # https://docs.python.org/3.0/whatsnew/3.0.html
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
771 c = lambda x, y: (x > y) - (x < y)
24305
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
772 # Sort bigger changes first.
22267
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
773 if not d:
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
774 d = c(len(l.entries), len(r.entries))
24305
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
775 # Try sorting by filename in the change.
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
776 if not d:
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
777 d = c([e.file for e in l.entries], [e.file for e in r.entries])
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
778 # Try and put changes without a branch point before ones with
867c3649be5d cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents: 22267
diff changeset
779 # a branch point.
22267
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
780 if not d:
90cf454edd70 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents: 22202
diff changeset
781 d = c(len(l.branchpoints), len(r.branchpoints))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
782 return d
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
783
37886
fe148d7544a4 cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key
Augie Fackler <augie@google.com>
parents: 37884
diff changeset
784 changesets.sort(key=functools.cmp_to_key(cscmp))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
785
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
786 # Collect tags
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
787
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
788 globaltags = {}
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
789 for c in changesets:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
790 for e in c.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
791 for tag in e.tags:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
792 # remember which is the latest changeset to have this tag
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
793 globaltags[tag] = c
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
794
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
795 for c in changesets:
8456
e9e2a2c9b294 convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8225
diff changeset
796 tags = set()
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
797 for e in c.entries:
8483
221786b9ce34 convert/cvsps: use set.update for bulk update
Martin Geisler <mg@lazybytes.net>
parents: 8456
diff changeset
798 tags.update(e.tags)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
799 # remember tags only if this is the latest changeset to have it
8456
e9e2a2c9b294 convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8225
diff changeset
800 c.tags = sorted(tag for tag in tags if globaltags[tag] is c)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
801
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
802 # Find parent changesets, handle {{mergetobranch BRANCHNAME}}
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
803 # by inserting dummy changesets with two parents, and handle
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
804 # {{mergefrombranch BRANCHNAME}} by setting two parents.
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
805
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
806 if mergeto is None:
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
807 mergeto = br'{{mergetobranch ([-\w]+)}}'
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
808 if mergeto:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
809 mergeto = re.compile(mergeto)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
810
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
811 if mergefrom is None:
37884
72284d296b02 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com>
parents: 37658
diff changeset
812 mergefrom = br'{{mergefrombranch ([-\w]+)}}'
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
813 if mergefrom:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
814 mergefrom = re.compile(mergefrom)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
815
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
816 versions = {} # changeset index where we saw any particular file version
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
817 branches = {} # changeset index where we saw a branch
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
818 n = len(changesets)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
819 i = 0
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10264
diff changeset
820 while i < n:
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
821 c = changesets[i]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
822
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
823 for f in c.entries:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
824 versions[(f.rcs, f.revision)] = i
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
825
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
826 p = None
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
827 if c.branch in branches:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
828 p = branches[c.branch]
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
829 else:
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
830 # first changeset on a new branch
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
831 # the parent is a changeset with the branch in its
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
832 # branchpoints such that it is the latest possible
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
833 # commit without any intervening, unrelated commits.
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
834
38783
e7aa113b14f7 global: use pycompat.xrange()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38295
diff changeset
835 for candidate in pycompat.xrange(i):
8756
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
836 if c.branch not in changesets[candidate].branchpoints:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
837 if p is not None:
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
838 break
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
839 continue
6019e6517f95 convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents: 8661
diff changeset
840 p = candidate
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
841
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
842 c.parents = []
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
843 if p is not None:
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
844 p = changesets[p]
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
845
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
846 # Ensure no changeset has a synthetic changeset as a parent.
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
847 while p.synthetic:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
848 assert len(p.parents) <= 1, _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
849 b'synthetic changeset cannot have multiple parents'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
850 )
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
851 if p.parents:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
852 p = p.parents[0]
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
853 else:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
854 p = None
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
855 break
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
856
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
857 if p is not None:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
858 c.parents.append(p)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
859
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
860 if c.mergepoint:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
861 if c.mergepoint == b'HEAD':
7956
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
862 c.mergepoint = None
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
863 c.parents.append(changesets[branches[c.mergepoint]])
3e7611a83230 convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents: 7950
diff changeset
864
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
865 if mergefrom:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
866 m = mergefrom.search(c.comment)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
867 if m:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
868 m = m.group(1)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
869 if m == b'HEAD':
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
870 m = None
8171
4e5bd9b97bb3 cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents: 8080
diff changeset
871 try:
4e5bd9b97bb3 cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents: 8080
diff changeset
872 candidate = changesets[branches[m]]
4e5bd9b97bb3 cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents: 8080
diff changeset
873 except KeyError:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
874 ui.warn(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
875 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
876 b"warning: CVS commit message references "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
877 b"non-existent branch %r:\n%s\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
878 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
879 % (pycompat.bytestr(m), c.comment)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
880 )
7950
9bbcfa898cd3 issue1578: fix crash: do not use synthetic changesets as merge parents.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
881 if m in branches and c.branch != m and not candidate.synthetic:
9bbcfa898cd3 issue1578: fix crash: do not use synthetic changesets as merge parents.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
882 c.parents.append(candidate)
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
883
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
884 if mergeto:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
885 m = mergeto.search(c.comment)
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
886 if m:
16688
cfb6682961b8 cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
887 if m.groups():
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
888 m = m.group(1)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
889 if m == b'HEAD':
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
890 m = None
16688
cfb6682961b8 cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
891 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
892 m = None # if no group found then merge to HEAD
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
893 if m in branches and c.branch != m:
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
894 # insert empty changeset for merge
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10264
diff changeset
895 cc = changeset(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
896 author=c.author,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
897 branch=m,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
898 date=c.date,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
899 comment=b'convert-repo: CVS merge from branch %s'
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10264
diff changeset
900 % c.branch,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
901 entries=[],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
902 tags=[],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
903 parents=[changesets[branches[m]], c],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
904 )
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
905 changesets.insert(i + 1, cc)
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
906 branches[m] = i + 1
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
907
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
908 # adjust our loop counters now we have inserted a new entry
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
909 n += 1
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
910 i += 2
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
911 continue
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
912
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
913 branches[c.branch] = i
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
914 i += 1
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
915
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
916 # Drop synthetic changesets (safe now that we have ensured no other
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
917 # changesets can have them as parents).
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
918 i = 0
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
919 while i < len(changesets):
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
920 if changesets[i].synthetic:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
921 del changesets[i]
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
922 else:
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
923 i += 1
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents: 7601
diff changeset
924
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
925 # Number changesets
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
926
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
927 for i, c in enumerate(changesets):
6688
5cd7a8433cd4 cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents: 6687
diff changeset
928 c.id = i + 1
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
929
19505
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
930 if odd:
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
931 for l, r in odd:
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
932 if l.id is not None and r.id is not None:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
933 ui.warn(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
934 _(b'changeset %d is both before and after %d\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
935 % (l.id, r.id)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
936 )
19505
7b815e38022a convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 19145
diff changeset
937
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
938 ui.status(_(b'%d changeset entries\n') % len(changesets))
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
939
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
940 hook.hook(ui, None, b"cvschangesets", True, changesets=changesets)
10095
69ce7a10e593 convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 9467
diff changeset
941
6687
f8ef39206f6a convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff changeset
942 return changesets
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
943
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
944
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
945 def debugcvsps(ui, *args, **opts):
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
946 """Read CVS rlog for current directory or named path in
8661
883f14fcd1df convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents: 8483
diff changeset
947 repository, and convert the log to changesets based on matching
883f14fcd1df convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents: 8483
diff changeset
948 commit log entries and dates.
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45681
diff changeset
949 """
36329
93943eef696f py3: use pycompat.byteskwargs in hgext/convert/
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36132
diff changeset
950 opts = pycompat.byteskwargs(opts)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
951 if opts[b"new_cache"]:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
952 cache = b"write"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
953 elif opts[b"update_cache"]:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
954 cache = b"update"
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
955 else:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
956 cache = None
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
957
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
958 revisions = opts[b"revisions"]
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
959
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
960 try:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
961 if args:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
962 log = []
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
963 for d in args:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
964 log += createlog(ui, d, root=opts[b"root"], cache=cache)
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
965 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
966 log = createlog(ui, root=opts[b"root"], cache=cache)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24305
diff changeset
967 except logerror as e:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
968 ui.write(b"%r\n" % e)
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
969 return
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
970
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
971 changesets = createchangeset(ui, log, opts[b"fuzz"])
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
972 del log
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
973
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
974 # Print changesets (optionally filtered)
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
975
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
976 off = len(revisions)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
977 branches = {} # latest version number in each branch
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
978 ancestors = {} # parent branch
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
979 for cs in changesets:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
980
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
981 if opts[b"ancestors"]:
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
982 if cs.branch not in branches and cs.parents and cs.parents[0].id:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
983 ancestors[cs.branch] = (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
984 changesets[cs.parents[0].id - 1].branch,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
985 cs.parents[0].id,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
986 )
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
987 branches[cs.branch] = cs.id
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
988
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
989 # limit by branches
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
990 if (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
991 opts[b"branches"]
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
992 and (cs.branch or b'HEAD') not in opts[b"branches"]
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
993 ):
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
994 continue
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
995
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
996 if not off:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
997 # Note: trailing spaces on several lines here are needed to have
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
998 # bug-for-bug compatibility with cvsps.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
999 ui.write(b'---------------------\n')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1000 ui.write((b'PatchSet %d \n' % cs.id))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1001 ui.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1002 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1003 b'Date: %s\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1004 % dateutil.datestr(cs.date, b'%Y/%m/%d %H:%M:%S %1%2')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1005 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1006 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1007 ui.write((b'Author: %s\n' % cs.author))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1008 ui.write((b'Branch: %s\n' % (cs.branch or b'HEAD')))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1009 ui.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1010 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1011 b'Tag%s: %s \n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1012 % (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1013 [b'', b's'][len(cs.tags) > 1],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1014 b','.join(cs.tags) or b'(none)',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1015 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1016 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1017 )
18261
1b7b5975793f cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 17956
diff changeset
1018 if cs.branchpoints:
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1019 ui.writenoi18n(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1020 b'Branchpoints: %s \n' % b', '.join(sorted(cs.branchpoints))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1021 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1022 if opts[b"parents"] and cs.parents:
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10264
diff changeset
1023 if len(cs.parents) > 1:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1024 ui.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1025 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1026 b'Parents: %s\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1027 % (b','.join([(b"%d" % p.id) for p in cs.parents]))
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1028 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1029 )
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1030 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1031 ui.write((b'Parent: %d\n' % cs.parents[0].id))
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1032
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1033 if opts[b"ancestors"]:
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1034 b = cs.branch
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1035 r = []
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1036 while b:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1037 b, c = ancestors[b]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1038 r.append(b'%s:%d:%d' % (b or b"HEAD", c, branches[b]))
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1039 if r:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1040 ui.write((b'Ancestors: %s\n' % (b','.join(r))))
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1041
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1042 ui.writenoi18n(b'Log:\n')
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1043 ui.write(b'%s\n\n' % cs.comment)
43080
86e4daa2d54c cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
1044 ui.writenoi18n(b'Members: \n')
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1045 for f in cs.entries:
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1046 fn = f.file
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1047 if fn.startswith(opts[b"prefix"]):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1048 fn = fn[len(opts[b"prefix"]) :]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1049 ui.write(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1050 b'\t%s:%s->%s%s \n'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1051 % (
37887
dd071b34e60b cvsps: portably convert int to bytes
Augie Fackler <augie@google.com>
parents: 37886
diff changeset
1052 fn,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1053 b'.'.join([b"%d" % x for x in f.parent]) or b'INITIAL',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1054 b'.'.join([(b"%d" % x) for x in f.revision]),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1055 [b'', b'(DEAD)'][f.dead],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1056 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1057 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1058 ui.write(b'\n')
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1059
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1060 # have we seen the start tag?
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1061 if revisions and off:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1062 if revisions[0] == (b"%d" % cs.id) or revisions[0] in cs.tags:
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1063 off = False
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1064
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1065 # see if we reached the end tag
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10264
diff changeset
1066 if len(revisions) > 1 and not off:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43052
diff changeset
1067 if revisions[1] == (b"%d" % cs.id) or revisions[1] in cs.tags:
7502
16905fc2690f Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents: 7280
diff changeset
1068 break