Mercurial > hg
annotate hgext/convert/cvsps.py @ 36916:1b9f6440506b
bdiff: convert more longs to int64_t
MSVC previously flagged these where the function is stored in a pointer:
bdiff.c(284) : warning C4028: formal parameter 1 different from declaration
bdiff.c(284) : warning C4028: formal parameter 2 different from declaration
bdiff.c(284) : warning C4028: formal parameter 3 different from declaration
bdiff.c(284) : warning C4028: formal parameter 4 different from declaration
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 09 Mar 2018 21:59:07 -0500 |
parents | c6061cadb400 |
children | f0b6fbea00cf |
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 | 6 # GNU General Public License version 2 or any later version. |
28369
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
7 from __future__ import absolute_import |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
8 |
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 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
10 import re |
28369
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
11 |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
28369
diff
changeset
|
12 from mercurial.i18n import _ |
28369
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
13 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
|
14 encoding, |
33388
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
15 error, |
28369
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
16 hook, |
30616
6f9fcd29e290
py3: replace os.sep with pycompat.ossep (part 4 of 4)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29324
diff
changeset
|
17 pycompat, |
28369
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
18 util, |
71176606fa0a
convert: cvsps use absolute_import
timeless <timeless@mozdev.org>
parents:
26593
diff
changeset
|
19 ) |
36607
c6061cadb400
util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents:
36455
diff
changeset
|
20 from mercurial.utils import dateutil |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
21 |
29324
b501579147f1
py3: conditionalize cPickle import by adding in util
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29205
diff
changeset
|
22 pickle = util.pickle |
b501579147f1
py3: conditionalize cPickle import by adding in util
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29205
diff
changeset
|
23 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
24 class logentry(object): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
25 '''Class logentry has the following attributes: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
26 .author - author name as CVS knows it |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
27 .branch - name of branch this revision is on |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
28 .branches - revision tuple of branches starting at this revision |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
29 .comment - commit message |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
30 .commitid - CVS commitid or None |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
31 .date - the commit date as a (time, tz) tuple |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
32 .dead - true if file revision is dead |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
33 .file - Name of file |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
34 .lines - a tuple (+lines, -lines) or None |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
35 .parent - Previous revision of this entry |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
36 .rcs - name of file as returned from CVS |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
37 .revision - revision number as tuple |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
38 .tags - list of tags on the file |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
39 .synthetic - is this a synthetic "file ... added on ..." revision? |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
40 .mergepoint - the branch that has been merged from (if present in |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
41 rlog output) or None |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
42 .branchpoints - the branches that start at the current entry or empty |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
43 ''' |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
44 def __init__(self, **entries): |
10701
35893dcfd40c
cvsps: fix traceback involving 'synthetic'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10695
diff
changeset
|
45 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
|
46 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
|
47 |
8080
19229b0b292d
cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents:
8079
diff
changeset
|
48 def __repr__(self): |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
49 items = ("%s=%r"%(k, self.__dict__[k]) for k in sorted(self.__dict__)) |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
50 return "%s(%s)"%(type(self).__name__, ", ".join(items)) |
8080
19229b0b292d
cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents:
8079
diff
changeset
|
51 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
52 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
|
53 pass |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
54 |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
55 def getrepopath(cvspath): |
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
56 """Return the repository path from a CVS path. |
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
57 |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
33388
diff
changeset
|
58 >>> getrepopath(b'/foo/bar') |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
59 '/foo/bar' |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
33388
diff
changeset
|
60 >>> 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
|
61 '/foo/bar' |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
33388
diff
changeset
|
62 >>> getrepopath(b':pserver:10/foo/bar') |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
63 '/foo/bar' |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
33388
diff
changeset
|
64 >>> getrepopath(b':pserver:10c:/foo/bar') |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
65 '/foo/bar' |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
33388
diff
changeset
|
66 >>> getrepopath(b':pserver:/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':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
|
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:truc@foo.bar:/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: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
|
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'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
|
75 '/path/to/repository' |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
76 """ |
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
77 # 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
|
78 # [:method:][[user][:password]@]hostname[:[port]]/path/to/repository |
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
79 # |
19145
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
80 # 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
|
81 # 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
|
82 # 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
|
83 |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
84 parts = cvspath.split(':') |
19145
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
85 atposition = parts[-1].find('@') |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
86 start = 0 |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
87 |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
88 if atposition != -1: |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
89 start = atposition |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
90 |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
91 repopath = parts[-1][parts[-1].find('/', start):] |
0a12e5f3a979
convert: fix bug of wrong CVS path parsing without port number (issue3678)
Blesso hrvoje1212@gmail.com
parents:
18718
diff
changeset
|
92 return repopath |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
93 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
94 def createlog(ui, directory=None, root="", rlog=True, cache=None): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
95 '''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
|
96 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
97 # 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
|
98 # 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
|
99 _scache = {} |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
100 def scache(s): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
101 "return a shared version of a string" |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
102 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
|
103 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
104 ui.status(_('collecting CVS rlog\n')) |
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 log = [] # list of logentry objects containing the CVS state |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
107 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
108 # patterns to match in CVS (r)log output, by state of use |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
109 re_00 = re.compile('RCS file: (.+)$') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
110 re_01 = re.compile('cvs \\[r?log aborted\\]: (.+)$') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
111 re_02 = re.compile('cvs (r?log|server): (.+)\n$') |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
112 re_03 = re.compile("(Cannot access.+CVSROOT)|" |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
113 "(can't create temporary directory.+)$") |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
114 re_10 = re.compile('Working file: (.+)$') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
115 re_20 = re.compile('symbolic names:') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
116 re_30 = re.compile('\t(.+): ([\\d.]+)$') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
117 re_31 = re.compile('----------------------------$') |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
118 re_32 = re.compile('=======================================' |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
119 '======================================$') |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
120 re_50 = re.compile('revision ([\\d.]+)(\s+locked by:\s+.+;)?$') |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
121 re_60 = re.compile(r'date:\s+(.+);\s+author:\s+(.+);\s+state:\s+(.+?);' |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
122 r'(\s+lines:\s+(\+\d+)?\s+(-\d+)?;)?' |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
123 r'(\s+commitid:\s+([^;]+);)?' |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
124 r'(.*mergepoint:\s+([^;]+);)?') |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
125 re_70 = re.compile('branches: (.+);$') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
126 |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
127 file_added_re = re.compile(r'file [^/]+ was (initially )?added on branch') |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
128 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
129 prefix = '' # leading path to strip of what we get from CVS |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
130 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
131 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
|
132 # 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
|
133 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
134 # 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
|
135 try: |
36132
42a393ea56d2
convert: open all files in binary mode
Augie Fackler <augie@google.com>
parents:
34131
diff
changeset
|
136 prefix = open(os.path.join('CVS','Repository'), 'rb').read().strip() |
10695
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
137 directory = prefix |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
138 if prefix == ".": |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
139 prefix = "" |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
140 except IOError: |
10939
9f6731b03906
convert: mark strings for translation
Martin Geisler <mg@lazybytes.net>
parents:
10701
diff
changeset
|
141 raise logerror(_('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
|
142 |
30616
6f9fcd29e290
py3: replace os.sep with pycompat.ossep (part 4 of 4)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29324
diff
changeset
|
143 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
|
144 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
|
145 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
146 # 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
|
147 try: |
36132
42a393ea56d2
convert: open all files in binary mode
Augie Fackler <augie@google.com>
parents:
34131
diff
changeset
|
148 root = open(os.path.join('CVS','Root'), '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
|
149 except IOError: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
150 pass |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
151 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
152 if not root: |
30638
1c5cbf28f007
py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30616
diff
changeset
|
153 root = encoding.environ.get('CVSROOT', '') |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
154 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
155 # 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
|
156 oldlog = [] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
157 date = None |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
158 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
159 if cache: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
160 cachedir = os.path.expanduser('~/.hg.cvsps') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
161 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
|
162 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
|
163 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
164 # 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
|
165 # 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
|
166 # 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
|
167 # alphanumeric characters, concatenated in a way that does not |
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
16688
diff
changeset
|
168 # 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
|
169 # :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
|
170 # and |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
171 # /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
|
172 # are mapped to different cache file names. |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
173 cachefile = root.split(":") + [directory, "cache"] |
36455
9e3cb58c7ab3
py3: make sure regexes are bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36329
diff
changeset
|
174 cachefile = ['-'.join(re.findall(br'\w+', s)) for s in cachefile if s] |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
175 cachefile = os.path.join(cachedir, |
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
176 '.'.join([s for s in cachefile if s])) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
177 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
178 if cache == 'update': |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
179 try: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
180 ui.note(_('reading cvs log cache %s\n') % cachefile) |
36132
42a393ea56d2
convert: open all files in binary mode
Augie Fackler <augie@google.com>
parents:
34131
diff
changeset
|
181 oldlog = pickle.load(open(cachefile, 'rb')) |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
182 for e in oldlog: |
18286 | 183 if not (util.safehasattr(e, 'branchpoints') and |
184 util.safehasattr(e, 'commitid') and | |
185 util.safehasattr(e, 'mergepoint')): | |
186 ui.status(_('ignoring old cache\n')) | |
187 oldlog = [] | |
188 break | |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
189 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
190 ui.note(_('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
|
191 except Exception as e: |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
192 ui.note(_('error reading cache: %r\n') % e) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
193 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
194 if oldlog: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
195 date = oldlog[-1].date # last commit date as a (time,tz) tuple |
36607
c6061cadb400
util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents:
36455
diff
changeset
|
196 date = dateutil.datestr(date, '%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
|
197 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
198 # build the CVS commandline |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
199 cmd = ['cvs', '-q'] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
200 if root: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
201 cmd.append('-d%s' % root) |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
202 p = util.normpath(getrepopath(root)) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
203 if not p.endswith('/'): |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
204 p += '/' |
10695
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
205 if prefix: |
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
206 # looks like normpath replaces "" by "." |
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
207 prefix = p + util.normpath(prefix) |
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
208 else: |
b4b16e90712f
convert: teach cvsps to handle . repository (issue1649)
Mathieu Clabaut <mathieu.clabaut@systerel.fr>
parents:
10282
diff
changeset
|
209 prefix = p |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
210 cmd.append(['log', 'rlog'][rlog]) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
211 if date: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
212 # no space between option and date string |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
213 cmd.append('-d>%s' % date) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
214 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
|
215 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
216 # state machine begins here |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
217 tags = {} # dictionary of revisions on current file with their tags |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
218 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
|
219 rcsmap = {} |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
220 state = 0 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
221 store = False # set when a new record can be appended |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
222 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
223 cmd = [util.shellquote(arg) for arg in cmd] |
6956
12472a240398
i18n: mark strings for translation in convert extension
Martin Geisler <mg@daimi.au.dk>
parents:
6762
diff
changeset
|
224 ui.note(_("running %s\n") % (' '.join(cmd))) |
9467
4c041f1ee1b4
do not attempt to translate ui.debug output
Martin Geisler <mg@lazybytes.net>
parents:
9032
diff
changeset
|
225 ui.debug("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
|
226 |
7593
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
227 pfp = util.popen(' '.join(cmd)) |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
228 peek = pfp.readline() |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
229 while True: |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
230 line = peek |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
231 if line == '': |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
232 break |
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
233 peek = pfp.readline() |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
234 if line.endswith('\n'): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
235 line = line[:-1] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
236 #ui.debug('state=%d line=%r\n' % (state, line)) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
237 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
238 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
|
239 # 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
|
240 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
|
241 if match: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
242 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
|
243 tags = {} |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
244 if rlog: |
7097
d4218edd55bd
convert: fix builtin cvsps under Windows
Patrick Mezard <pmezard@gmail.com>
parents:
6956
diff
changeset
|
245 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
|
246 if filename.startswith(prefix): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
247 filename = filename[len(prefix):] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
248 if filename.startswith('/'): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
249 filename = filename[1:] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
250 if filename.startswith('Attic/'): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
251 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
|
252 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
253 filename = filename.replace('/Attic/', '/') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
254 state = 2 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
255 continue |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
256 state = 1 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
257 continue |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
258 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
|
259 if match: |
11122
2114e44b08f6
clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents:
10950
diff
changeset
|
260 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
|
261 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
|
262 if match: |
11122
2114e44b08f6
clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents:
10950
diff
changeset
|
263 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
|
264 if re_03.match(line): |
11122
2114e44b08f6
clean up remaining generic exceptions
Matt Mackall <mpm@selenic.com>
parents:
10950
diff
changeset
|
265 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
|
266 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
267 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
|
268 # 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
|
269 match = re_10.match(line) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
270 assert match, _('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
|
271 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
|
272 state = 2 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
273 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
274 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
|
275 # 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
|
276 if re_20.match(line): |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
277 branchmap = {} |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
278 state = 3 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
279 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
280 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
|
281 # 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
|
282 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
|
283 if match: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
284 rev = [int(x) for x in match.group(2).split('.')] |
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 # 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
|
287 revn = len(rev) |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
288 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
|
289 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
|
290 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
|
291 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
292 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
|
293 tags[rev] = [] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
294 tags[rev].append(match.group(1)) |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
295 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
|
296 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
297 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
|
298 state = 5 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
299 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
|
300 state = 0 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
301 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
302 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
|
303 # 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
|
304 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
|
305 state = 5 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
306 else: |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
307 assert not re_32.match(line), _('must have at least ' |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
308 'some revisions') |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
309 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
310 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
|
311 # 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
|
312 # 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
|
313 # 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
|
314 match = re_50.match(line) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
315 assert match, _('expected revision number') |
18265
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
316 e = logentry(rcs=scache(rcs), |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
317 file=scache(filename), |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
318 revision=tuple([int(x) for x in |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
319 match.group(1).split('.')]), |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
320 branches=[], |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
321 parent=None, |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
322 commitid=None, |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
323 mergepoint=None, |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
324 branchpoints=set()) |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
325 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
326 state = 6 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
327 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
328 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
|
329 # 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
|
330 match = re_60.match(line) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
331 assert match, _('revision must be followed by date line') |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
332 d = 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
|
333 if d[2] == '/': |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
334 # Y2K |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
335 d = '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
|
336 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
337 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
|
338 # cvs log dates always in GMT |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
339 d = d + ' UTC' |
36607
c6061cadb400
util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents:
36455
diff
changeset
|
340 e.date = dateutil.parsedate(d, ['%y/%m/%d %H:%M:%S', |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
341 '%Y/%m/%d %H:%M:%S', |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
342 '%Y-%m-%d %H:%M:%S']) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
343 e.author = scache(match.group(2)) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
344 e.dead = match.group(3).lower() == 'dead' |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
345 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
346 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
|
347 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
|
348 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
|
349 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
350 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
|
351 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
|
352 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
|
353 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
354 e.lines = None |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
355 |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
356 if match.group(7): # cvs 1.12 commitid |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
357 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
|
358 |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
359 if match.group(9): # cvsnt mergepoint |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
360 myrev = match.group(10).split('.') |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
361 if len(myrev) == 2: # head |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
362 e.mergepoint = 'HEAD' |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
363 else: |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
364 myrev = '.'.join(myrev[:-2] + ['0', myrev[-2]]) |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
365 branches = [b for b in branchmap if branchmap[b] == myrev] |
16683 | 366 assert len(branches) == 1, ('unknown branch: %s' |
367 % e.mergepoint) | |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
368 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
|
369 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
370 e.comment = [] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
371 state = 7 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
372 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
373 elif state == 7: |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
374 # 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
|
375 # 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
|
376 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
|
377 if m: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
378 e.branches = [tuple([int(y) for y in x.strip().split('.')]) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
379 for x in m.group(1).split(';')] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
380 state = 8 |
7593
9811cc670c51
cvsps: cvs log loop uses lookahead to avoid misleading text
David Champion <dgc@uchicago.edu>
parents:
7573
diff
changeset
|
381 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
|
382 state = 5 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
383 store = True |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
384 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
|
385 state = 0 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
386 store = True |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
387 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
388 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
|
389 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
390 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
|
391 # 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
|
392 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
|
393 cpeek = peek |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
394 if cpeek.endswith('\n'): |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
395 cpeek = cpeek[:-1] |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
396 if re_50.match(cpeek): |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
397 state = 5 |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
398 store = True |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
399 else: |
4e5b7d130e76
convert: detect false cset boundaries in cvsps descriptions
jakob krainz <jakob@hawo-net.de>
parents:
14945
diff
changeset
|
400 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
|
401 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
|
402 state = 0 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
403 store = True |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
404 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
405 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
|
406 |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
407 # 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
|
408 # 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
|
409 # 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
|
410 # 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
|
411 # 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
|
412 # 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
|
413 # createchangeset() can take care of them. |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
414 if (store and |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
415 e.dead and |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
416 e.revision[-1] == 1 and # 1.1 or 1.1.x.1 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
417 len(e.comment) == 1 and |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
418 file_added_re.match(e.comment[0])): |
9467
4c041f1ee1b4
do not attempt to translate ui.debug output
Martin Geisler <mg@lazybytes.net>
parents:
9032
diff
changeset
|
419 ui.debug('found synthetic revision in %s: %r\n' |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
420 % (e.rcs, e.comment[0])) |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
421 e.synthetic = True |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
422 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
423 if store: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
424 # 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
|
425 store = False |
8209
a1a5a57efe90
replace util.sort with sorted built-in
Matt Mackall <mpm@selenic.com>
parents:
8171
diff
changeset
|
426 e.tags = sorted([scache(x) for x in tags.get(e.revision, [])]) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
427 e.comment = scache('\n'.join(e.comment)) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
428 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
429 revn = len(e.revision) |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
430 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
|
431 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
|
432 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
433 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
|
434 |
8756
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
435 # find the branches starting from this revision |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
436 branchpoints = set() |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
437 for branch, revision in branchmap.iteritems(): |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
438 revparts = tuple([int(i) for i in revision.split('.')]) |
10950 | 439 if len(revparts) < 2: # bad tags |
440 continue | |
8756
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
441 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
|
442 # normal branch |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
443 if revparts[:-2] == e.revision: |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
444 branchpoints.add(branch) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
445 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
|
446 if revparts in e.branches: |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
447 branchpoints.add(branch) |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
448 e.branchpoints = branchpoints |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
449 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
450 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
|
451 |
26593
c60dfcc0abf2
cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents:
25660
diff
changeset
|
452 rcsmap[e.rcs.replace('/Attic/', '/')] = e.rcs |
c60dfcc0abf2
cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents:
25660
diff
changeset
|
453 |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
454 if len(log) % 100 == 0: |
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
455 ui.status(util.ellipsis('%d %s' % (len(log), e.file), 80)+'\n') |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
456 |
9032
1fa80c5428b8
compat: use 'key' argument instead of 'cmp' when sorting a list
Alejandro Santos <alejolp@alejolp.com>
parents:
9031
diff
changeset
|
457 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
|
458 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
459 # 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
|
460 versions = {} |
26593
c60dfcc0abf2
cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents:
25660
diff
changeset
|
461 for e in sorted(oldlog, key=lambda x: (x.rcs, x.revision)): |
c60dfcc0abf2
cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents:
25660
diff
changeset
|
462 rcs = e.rcs.replace('/Attic/', '/') |
c60dfcc0abf2
cvsps: fix computation of parent revisions when log caching is on
Emanuele Giaquinta <emanuele.giaquinta@gmail.com>
parents:
25660
diff
changeset
|
463 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
|
464 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
|
465 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
|
466 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
|
467 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 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
|
475 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
476 # 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
|
477 if cache: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
478 if log: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
479 # 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
|
480 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
|
481 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
482 if oldlog and oldlog[-1].date >= log[0].date: |
10939
9f6731b03906
convert: mark strings for translation
Martin Geisler <mg@lazybytes.net>
parents:
10701
diff
changeset
|
483 raise logerror(_('log cache overlaps with new log entries,' |
9f6731b03906
convert: mark strings for translation
Martin Geisler <mg@lazybytes.net>
parents:
10701
diff
changeset
|
484 ' re-run without cache.')) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
485 |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
486 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
|
487 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
488 # write the new cachefile |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
489 ui.note(_('writing cvs log cache %s\n') % cachefile) |
36132
42a393ea56d2
convert: open all files in binary mode
Augie Fackler <augie@google.com>
parents:
34131
diff
changeset
|
490 pickle.dump(log, open(cachefile, 'wb')) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
491 else: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
492 log = oldlog |
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 ui.status(_('%d log entries\n') % len(log)) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
495 |
33388
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
496 encodings = ui.configlist('convert', 'cvsps.logencoding') |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
497 if encodings: |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
498 def revstr(r): |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
499 # 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
|
500 # (e.g. (1, 2) for "1.2") |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
501 return '.'.join(pycompat.maplist(pycompat.bytestr, r)) |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
502 |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
503 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
|
504 comment = entry.comment |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
505 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
|
506 try: |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
507 entry.comment = comment.decode(e).encode('utf-8') |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
508 if ui.debugflag: |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
509 ui.debug("transcoding by %s: %s of %s\n" % |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
510 (e, revstr(entry.revision), entry.file)) |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
511 break |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
512 except UnicodeDecodeError: |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
513 pass # try next encoding |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
514 except LookupError as inst: # unknown encoding, maybe |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
515 raise error.Abort(inst, |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
516 hint=_('check convert.cvsps.logencoding' |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
517 ' configuration')) |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
518 else: |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
519 raise error.Abort(_("no encoding can transcode" |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
520 " CVS log message for %s of %s") |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
521 % (revstr(entry.revision), entry.file), |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
522 hint=_('check convert.cvsps.logencoding' |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
523 ' configuration')) |
0823f0983eaa
convert: transcode CVS log messages by specified encoding (issue5597)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
31408
diff
changeset
|
524 |
10095
69ce7a10e593
convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
9467
diff
changeset
|
525 hook.hook(ui, None, "cvslog", True, log=log) |
69ce7a10e593
convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
9467
diff
changeset
|
526 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
527 return log |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
528 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
529 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
530 class changeset(object): |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
531 '''Class changeset has the following attributes: |
8079
fb162c47000b
cvsps: update docstring for changeset class.
Greg Ward <greg-hg@gerg.ca>
parents:
8028
diff
changeset
|
532 .id - integer identifying this changeset (list index) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
533 .author - author name as CVS knows it |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
534 .branch - name of branch this changeset is on, or None |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
535 .comment - commit message |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
536 .commitid - CVS commitid or None |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
537 .date - the commit date as a (time,tz) tuple |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
538 .entries - list of logentry objects in this changeset |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
539 .parents - list of one or two parent changesets |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
540 .tags - list of tags on this changeset |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
541 .synthetic - from synthetic revision "file ... added on branch ..." |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
542 .mergepoint- the branch that has been merged from or None |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
543 .branchpoints- the branches that start at the current entry or empty |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
544 ''' |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
545 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
|
546 self.id = None |
10701
35893dcfd40c
cvsps: fix traceback involving 'synthetic'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10695
diff
changeset
|
547 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
|
548 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
|
549 |
8080
19229b0b292d
cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents:
8079
diff
changeset
|
550 def __repr__(self): |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
551 items = ("%s=%r"%(k, self.__dict__[k]) for k in sorted(self.__dict__)) |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
552 return "%s(%s)"%(type(self).__name__, ", ".join(items)) |
8080
19229b0b292d
cvsps: make debugging easier by adding __repr__() methods.
Greg Ward <greg-hg@gerg.ca>
parents:
8079
diff
changeset
|
553 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
554 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
|
555 '''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
|
556 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
557 ui.status(_('creating changesets\n')) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
558 |
18718
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
559 # try to order commitids by date |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
560 mindate = {} |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
561 for e in log: |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
562 if e.commitid: |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
563 mindate[e.commitid] = min(e.date, mindate.get(e.commitid)) |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
564 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
565 # Merge changesets |
18718
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
566 log.sort(key=lambda x: (mindate.get(x.commitid), x.commitid, x.comment, |
c8c3887a24c1
convert: stabilize cvsps commitid sort order
Matt Mackall <mpm@selenic.com>
parents:
18375
diff
changeset
|
567 x.author, x.branch, x.date, x.branchpoints)) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
568 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
569 changesets = [] |
8456
e9e2a2c9b294
convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8225
diff
changeset
|
570 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
|
571 c = None |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
572 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
|
573 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
574 # 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
|
575 |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
16688
diff
changeset
|
576 # 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
|
577 # 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
|
578 # 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
|
579 # honoured by cvsps at this point). |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
580 # |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
581 # Consider the following case: |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
582 # foo 1.1 branchpoints: [MYBRANCH] |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
583 # bar 1.1 branchpoints: [MYBRANCH, MYBRANCH2] |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
584 # |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
585 # 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
|
586 # 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
|
587 # 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
|
588 # 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
|
589 # made to ensure that this is, in fact, what happens. |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
590 if not (c and e.branchpoints == c.branchpoints and |
18265
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
591 (# cvs commitids |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
592 (e.commitid is not None and e.commitid == c.commitid) or |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
593 (# no commitids, use fuzzy commit detection |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
594 (e.commitid is None or c.commitid is None) and |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
595 e.comment == c.comment and |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
596 e.author == c.author and |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
597 e.branch == c.branch and |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
598 ((c.date[0] + c.date[1]) <= |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
599 (e.date[0] + e.date[1]) <= |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
600 (c.date[0] + c.date[1]) + fuzz) and |
246f290e162a
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bos@serpentine.com>
parents:
18261
diff
changeset
|
601 e.file not in files))): |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
602 c = changeset(comment=e.comment, author=e.author, |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
603 branch=e.branch, date=e.date, |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
604 entries=[], mergepoint=e.mergepoint, |
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
605 branchpoints=e.branchpoints, commitid=e.commitid) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
606 changesets.append(c) |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
607 |
8456
e9e2a2c9b294
convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8225
diff
changeset
|
608 files = set() |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
609 if len(changesets) % 100 == 0: |
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
610 t = '%d %s' % (len(changesets), repr(e.comment)[1:-1]) |
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
611 ui.status(util.ellipsis(t, 80) + '\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 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
613 c.entries.append(e) |
8456
e9e2a2c9b294
convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8225
diff
changeset
|
614 files.add(e.file) |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
615 c.date = e.date # changeset date is date of latest commit in it |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
616 |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
617 # Mark synthetic changesets |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
618 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
619 for c in changesets: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
620 # 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
|
621 # 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
|
622 # 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
|
623 # changesets: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
624 # "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
|
625 # "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
|
626 # "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
|
627 # 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
|
628 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
|
629 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
630 # 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
|
631 |
15790
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
632 def entitycompare(l, r): |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
633 'Mimic cvsps sorting order' |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
634 l = l.file.split('/') |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
635 r = r.file.split('/') |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
636 nl = len(l) |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
637 nr = len(r) |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
638 n = min(nl, nr) |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
639 for i in range(n): |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
640 if i + 1 == nl and nl < nr: |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
641 return -1 |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
642 elif i + 1 == nr and nl > nr: |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
643 return +1 |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
644 elif l[i] < r[i]: |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
645 return -1 |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
646 elif l[i] > r[i]: |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
647 return +1 |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
648 return 0 |
52f816b40674
cvsps: pull function definition out of loop
Martin Geisler <mg@aragost.com>
parents:
15205
diff
changeset
|
649 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
650 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
|
651 c.entries.sort(entitycompare) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
652 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
653 # 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
|
654 |
19505
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
655 odd = set() |
31408
6e3c79bc9a35
convert: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30638
diff
changeset
|
656 def cscmp(l, r): |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
657 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
|
658 if d: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
659 return d |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
660 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
661 # 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
|
662 le = {} |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
663 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
|
664 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
|
665 re = {} |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
666 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
|
667 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
|
668 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
669 d = 0 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
670 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
|
671 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
|
672 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
|
673 d = 1 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
674 break |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
675 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
676 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
|
677 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
|
678 if d: |
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
679 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
|
680 d = -1 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
681 break |
22267
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
682 # 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
|
683 # 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
|
684 # 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
|
685 # 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
|
686 # 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
|
687 # 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
|
688 |
22267
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
689 # recommended replacement for cmp from |
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
690 # 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
|
691 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
|
692 # Sort bigger changes first. |
22267
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
693 if not d: |
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
694 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
|
695 # 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
|
696 if not d: |
867c3649be5d
cvsps: use a different tiebreaker to avoid flaky test
Augie Fackler <raf@durin42.com>
parents:
22267
diff
changeset
|
697 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
|
698 # 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
|
699 # a branch point. |
22267
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
700 if not d: |
90cf454edd70
cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com>
parents:
22202
diff
changeset
|
701 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
|
702 return d |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
703 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
704 changesets.sort(cscmp) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
705 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
706 # Collect tags |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
707 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
708 globaltags = {} |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
709 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
|
710 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
|
711 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
|
712 # 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
|
713 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
|
714 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
715 for c in changesets: |
8456
e9e2a2c9b294
convert: use set instead of dict
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8225
diff
changeset
|
716 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
|
717 for e in c.entries: |
8483
221786b9ce34
convert/cvsps: use set.update for bulk update
Martin Geisler <mg@lazybytes.net>
parents:
8456
diff
changeset
|
718 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
|
719 # 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
|
720 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
|
721 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
722 # 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
|
723 # 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
|
724 # {{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
|
725 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
726 if mergeto is None: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
727 mergeto = r'{{mergetobranch ([-\w]+)}}' |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
728 if mergeto: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
729 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
|
730 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
731 if mergefrom is None: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
732 mergefrom = r'{{mergefrombranch ([-\w]+)}}' |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
733 if mergefrom: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
734 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
|
735 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
736 versions = {} # changeset index where we saw any particular file version |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
737 branches = {} # changeset index where we saw a branch |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
738 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
|
739 i = 0 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
740 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
|
741 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
|
742 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
743 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
|
744 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
|
745 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
746 p = None |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
747 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
|
748 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
|
749 else: |
8756
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
750 # first changeset on a new branch |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
751 # 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
|
752 # 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
|
753 # commit without any intervening, unrelated commits. |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
754 |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
755 for candidate in xrange(i): |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
756 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
|
757 if p is not None: |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
758 break |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
759 continue |
6019e6517f95
convert: better support for CVS branchpoints (issue1447)
Henrik Stuart <hg@hstuart.dk>
parents:
8661
diff
changeset
|
760 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
|
761 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
762 c.parents = [] |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
763 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
|
764 p = changesets[p] |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
765 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
766 # 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
|
767 while p.synthetic: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
768 assert len(p.parents) <= 1, \ |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
769 _('synthetic changeset cannot have multiple parents') |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
770 if p.parents: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
771 p = p.parents[0] |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
772 else: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
773 p = None |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
774 break |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
775 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
776 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
|
777 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
|
778 |
7956
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
779 if c.mergepoint: |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
780 if c.mergepoint == 'HEAD': |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
781 c.mergepoint = None |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
782 c.parents.append(changesets[branches[c.mergepoint]]) |
3e7611a83230
convert: added cvsnt mergepoint support
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
7950
diff
changeset
|
783 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
784 if mergefrom: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
785 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
|
786 if m: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
787 m = m.group(1) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
788 if m == 'HEAD': |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
789 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
|
790 try: |
4e5bd9b97bb3
cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
8080
diff
changeset
|
791 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
|
792 except KeyError: |
4e5bd9b97bb3
cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
8080
diff
changeset
|
793 ui.warn(_("warning: CVS commit message references " |
4e5bd9b97bb3
cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
8080
diff
changeset
|
794 "non-existent branch %r:\n%s\n") |
4e5bd9b97bb3
cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
8080
diff
changeset
|
795 % (m, c.comment)) |
7950
9bbcfa898cd3
issue1578: fix crash: do not use synthetic changesets as merge parents.
Greg Ward <greg-hg@gerg.ca>
parents:
7862
diff
changeset
|
796 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
|
797 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
|
798 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
799 if mergeto: |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
800 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
|
801 if m: |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
802 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
|
803 m = m.group(1) |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
804 if m == 'HEAD': |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
805 m = None |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
806 else: |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
807 m = None # if no group found then merge to HEAD |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
808 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
|
809 # insert empty changeset for merge |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
810 cc = changeset( |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
811 author=c.author, branch=m, date=c.date, |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
812 comment='convert-repo: CVS merge from branch %s' |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
813 % c.branch, |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
814 entries=[], tags=[], |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
815 parents=[changesets[branches[m]], c]) |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
816 changesets.insert(i + 1, cc) |
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
817 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
|
818 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
819 # 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
|
820 n += 1 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
821 i += 2 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
822 continue |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
823 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
824 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
|
825 i += 1 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
826 |
7862
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
827 # 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
|
828 # 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
|
829 i = 0 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
830 while i < len(changesets): |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
831 if changesets[i].synthetic: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
832 del changesets[i] |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
833 else: |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
834 i += 1 |
02981000012e
cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
7601
diff
changeset
|
835 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
836 # Number changesets |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
837 |
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
838 for i, c in enumerate(changesets): |
6688
5cd7a8433cd4
cvsps: fix up some whitespace
Matt Mackall <mpm@selenic.com>
parents:
6687
diff
changeset
|
839 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
|
840 |
19505
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
841 if odd: |
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
842 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
|
843 if l.id is not None and r.id is not None: |
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
844 ui.warn(_('changeset %d is both before and after %d\n') |
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
845 % (l.id, r.id)) |
7b815e38022a
convert: handle changeset sorting errors without traceback (issue3961)
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
19145
diff
changeset
|
846 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
847 ui.status(_('%d changeset entries\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
|
848 |
10095
69ce7a10e593
convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
9467
diff
changeset
|
849 hook.hook(ui, None, "cvschangesets", True, changesets=changesets) |
69ce7a10e593
convert: implement two hooks in builtin cvsps
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
9467
diff
changeset
|
850 |
6687
f8ef39206f6a
convert: cvsps.py - code to generate changesets from a CVS repository
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
diff
changeset
|
851 return changesets |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
852 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
853 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
854 def debugcvsps(ui, *args, **opts): |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
855 '''Read CVS rlog for current directory or named path in |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
856 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
|
857 commit log entries and dates. |
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
858 ''' |
36329
93943eef696f
py3: use pycompat.byteskwargs in hgext/convert/
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36132
diff
changeset
|
859 opts = pycompat.byteskwargs(opts) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
860 if opts["new_cache"]: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
861 cache = "write" |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
862 elif opts["update_cache"]: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
863 cache = "update" |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
864 else: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
865 cache = None |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
866 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
867 revisions = opts["revisions"] |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
868 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
869 try: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
870 if args: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
871 log = [] |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
872 for d in args: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
873 log += createlog(ui, d, root=opts["root"], cache=cache) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
874 else: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
875 log = createlog(ui, root=opts["root"], cache=cache) |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24305
diff
changeset
|
876 except logerror as e: |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
877 ui.write("%r\n"%e) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
878 return |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
879 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
880 changesets = createchangeset(ui, log, opts["fuzz"]) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
881 del log |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
882 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
883 # Print changesets (optionally filtered) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
884 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
885 off = len(revisions) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
886 branches = {} # latest version number in each branch |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
887 ancestors = {} # parent branch |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
888 for cs in changesets: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
889 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
890 if opts["ancestors"]: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
891 if cs.branch not in branches and cs.parents and cs.parents[0].id: |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
892 ancestors[cs.branch] = (changesets[cs.parents[0].id - 1].branch, |
8661
883f14fcd1df
convert/cvsps: wrap long lines
Martin Geisler <mg@lazybytes.net>
parents:
8483
diff
changeset
|
893 cs.parents[0].id) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
894 branches[cs.branch] = cs.id |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
895 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
896 # limit by branches |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
897 if opts["branches"] and (cs.branch or 'HEAD') not in opts["branches"]: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
898 continue |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
899 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
900 if not off: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
901 # 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
|
902 # bug-for-bug compatibility with cvsps. |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
903 ui.write('---------------------\n') |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
904 ui.write(('PatchSet %d \n' % cs.id)) |
36607
c6061cadb400
util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents:
36455
diff
changeset
|
905 ui.write(('Date: %s\n' % dateutil.datestr(cs.date, |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
906 '%Y/%m/%d %H:%M:%S %1%2'))) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
907 ui.write(('Author: %s\n' % cs.author)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
908 ui.write(('Branch: %s\n' % (cs.branch or 'HEAD'))) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
909 ui.write(('Tag%s: %s \n' % (['', 's'][len(cs.tags) > 1], |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
910 ','.join(cs.tags) or '(none)'))) |
18261
1b7b5975793f
cvsps: use commitids (when present) to detect changesets
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
17956
diff
changeset
|
911 if cs.branchpoints: |
18375
cfbd33020066
convert: report cvsps branchpoints sorted
Mads Kiilerich <mads@kiilerich.com>
parents:
18286
diff
changeset
|
912 ui.write(('Branchpoints: %s \n') % |
cfbd33020066
convert: report cvsps branchpoints sorted
Mads Kiilerich <mads@kiilerich.com>
parents:
18286
diff
changeset
|
913 ', '.join(sorted(cs.branchpoints))) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
914 if opts["parents"] and cs.parents: |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
915 if len(cs.parents) > 1: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
916 ui.write(('Parents: %s\n' % |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
917 (','.join([str(p.id) for p in cs.parents])))) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
918 else: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
919 ui.write(('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
|
920 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
921 if opts["ancestors"]: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
922 b = cs.branch |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
923 r = [] |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
924 while b: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
925 b, c = ancestors[b] |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
926 r.append('%s:%d:%d' % (b or "HEAD", c, branches[b])) |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
927 if r: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
928 ui.write(('Ancestors: %s\n' % (','.join(r)))) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
929 |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
930 ui.write(('Log:\n')) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
931 ui.write('%s\n\n' % cs.comment) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17424
diff
changeset
|
932 ui.write(('Members: \n')) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
933 for f in cs.entries: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
934 fn = f.file |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
935 if fn.startswith(opts["prefix"]): |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
936 fn = fn[len(opts["prefix"]):] |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
937 ui.write('\t%s:%s->%s%s \n' % ( |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
938 fn, '.'.join([str(x) for x in f.parent]) or 'INITIAL', |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
939 '.'.join([str(x) for x in f.revision]), |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
940 ['', '(DEAD)'][f.dead])) |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
941 ui.write('\n') |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
942 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
943 # have we seen the start tag? |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
944 if revisions and off: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
945 if revisions[0] == str(cs.id) or \ |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
946 revisions[0] in cs.tags: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
947 off = False |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
948 |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
949 # see if we reached the end tag |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
950 if len(revisions) > 1 and not off: |
7502
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
951 if revisions[1] == str(cs.id) or \ |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
952 revisions[1] in cs.tags: |
16905fc2690f
Add debugcvsps command, replacing cvsps script
Frank Kingswood <frank@kingswood-consulting.co.uk>
parents:
7280
diff
changeset
|
953 break |