Show More
@@ -142,23 +142,8 b' def convert(ui, src, dest=None, revmapfi' | |||||
142 | converted, and that any directory reorganization in the CVS |
|
142 | converted, and that any directory reorganization in the CVS | |
143 | sandbox is ignored. |
|
143 | sandbox is ignored. | |
144 |
|
144 | |||
145 | Because CVS does not have changesets, it is necessary to collect |
|
|||
146 | individual commits to CVS and merge them into changesets. CVS |
|
|||
147 | source uses its internal changeset merging code by default but can |
|
|||
148 | be configured to call the external 'cvsps' program by setting:: |
|
|||
149 |
|
||||
150 | --config convert.cvsps='cvsps -A -u --cvs-direct -q' |
|
|||
151 |
|
||||
152 | This option is deprecated and will be removed in Mercurial 1.4. |
|
|||
153 |
|
||||
154 | The options shown are the defaults. |
|
145 | The options shown are the defaults. | |
155 |
|
146 | |||
156 | Internal cvsps is selected by setting :: |
|
|||
157 |
|
||||
158 | --config convert.cvsps=builtin |
|
|||
159 |
|
||||
160 | and has a few more configurable options: |
|
|||
161 |
|
||||
162 | --config convert.cvsps.cache=True (boolean) |
|
147 | --config convert.cvsps.cache=True (boolean) | |
163 | Set to False to disable remote log caching, for testing and |
|
148 | Set to False to disable remote log caching, for testing and | |
164 | debugging purposes. |
|
149 | debugging purposes. |
@@ -22,21 +22,11 b' class convert_cvs(converter_source):' | |||||
22 | raise NoRepo("%s does not look like a CVS checkout" % path) |
|
22 | raise NoRepo("%s does not look like a CVS checkout" % path) | |
23 |
|
23 | |||
24 | checktool('cvs') |
|
24 | checktool('cvs') | |
25 | self.cmd = ui.config('convert', 'cvsps', 'builtin') |
|
|||
26 | cvspsexe = self.cmd.split(None, 1)[0] |
|
|||
27 | self.builtin = cvspsexe == 'builtin' |
|
|||
28 | if not self.builtin: |
|
|||
29 | ui.warn(_('warning: support for external cvsps is deprecated and ' |
|
|||
30 | 'will be removed in Mercurial 1.4\n')) |
|
|||
31 |
|
||||
32 | if not self.builtin: |
|
|||
33 | checktool(cvspsexe) |
|
|||
34 |
|
25 | |||
35 | self.changeset = None |
|
26 | self.changeset = None | |
36 | self.files = {} |
|
27 | self.files = {} | |
37 | self.tags = {} |
|
28 | self.tags = {} | |
38 | self.lastbranch = {} |
|
29 | self.lastbranch = {} | |
39 | self.parent = {} |
|
|||
40 | self.socket = None |
|
30 | self.socket = None | |
41 | self.cvsroot = open(os.path.join(cvs, "Root")).read()[:-1] |
|
31 | self.cvsroot = open(os.path.join(cvs, "Root")).read()[:-1] | |
42 | self.cvsrepo = open(os.path.join(cvs, "Repository")).read()[:-1] |
|
32 | self.cvsrepo = open(os.path.join(cvs, "Repository")).read()[:-1] | |
@@ -50,19 +40,13 b' class convert_cvs(converter_source):' | |||||
50 | self.changeset = {} |
|
40 | self.changeset = {} | |
51 |
|
41 | |||
52 | maxrev = 0 |
|
42 | maxrev = 0 | |
53 | cmd = self.cmd |
|
|||
54 | if self.rev: |
|
43 | if self.rev: | |
55 | # TODO: handle tags |
|
44 | # TODO: handle tags | |
56 | try: |
|
45 | try: | |
57 | # patchset number? |
|
46 | # patchset number? | |
58 | maxrev = int(self.rev) |
|
47 | maxrev = int(self.rev) | |
59 | except ValueError: |
|
48 | except ValueError: | |
60 | try: |
|
49 | raise util.Abort(_('revision %s is not a patchset number') % self.rev) | |
61 | # date |
|
|||
62 | util.parsedate(self.rev, ['%Y/%m/%d %H:%M:%S']) |
|
|||
63 | cmd = '%s -d "1970/01/01 00:00:01" -d "%s"' % (cmd, self.rev) |
|
|||
64 | except util.Abort: |
|
|||
65 | raise util.Abort(_('revision %s is not a patchset number or date') % self.rev) |
|
|||
66 |
|
50 | |||
67 | d = os.getcwd() |
|
51 | d = os.getcwd() | |
68 | try: |
|
52 | try: | |
@@ -71,116 +55,36 b' class convert_cvs(converter_source):' | |||||
71 | state = 0 |
|
55 | state = 0 | |
72 | filerevids = {} |
|
56 | filerevids = {} | |
73 |
|
57 | |||
74 | if self.builtin: |
|
58 | cache = 'update' | |
75 | # builtin cvsps code |
|
59 | if not self.ui.configbool('convert', 'cvsps.cache', True): | |
76 | self.ui.status(_('using builtin cvsps\n')) |
|
60 | cache = None | |
77 |
|
61 | db = cvsps.createlog(self.ui, cache=cache) | ||
78 | cache = 'update' |
|
62 | db = cvsps.createchangeset(self.ui, db, | |
79 |
|
|
63 | fuzz=int(self.ui.config('convert', 'cvsps.fuzz', 60)), | |
80 | cache = None |
|
64 | mergeto=self.ui.config('convert', 'cvsps.mergeto', None), | |
81 | db = cvsps.createlog(self.ui, cache=cache) |
|
65 | mergefrom=self.ui.config('convert', 'cvsps.mergefrom', None)) | |
82 | db = cvsps.createchangeset(self.ui, db, |
|
|||
83 | fuzz=int(self.ui.config('convert', 'cvsps.fuzz', 60)), |
|
|||
84 | mergeto=self.ui.config('convert', 'cvsps.mergeto', None), |
|
|||
85 | mergefrom=self.ui.config('convert', 'cvsps.mergefrom', None)) |
|
|||
86 |
|
||||
87 | for cs in db: |
|
|||
88 | if maxrev and cs.id>maxrev: |
|
|||
89 | break |
|
|||
90 | id = str(cs.id) |
|
|||
91 | cs.author = self.recode(cs.author) |
|
|||
92 | self.lastbranch[cs.branch] = id |
|
|||
93 | cs.comment = self.recode(cs.comment) |
|
|||
94 | date = util.datestr(cs.date) |
|
|||
95 | self.tags.update(dict.fromkeys(cs.tags, id)) |
|
|||
96 |
|
||||
97 | files = {} |
|
|||
98 | for f in cs.entries: |
|
|||
99 | files[f.file] = "%s%s" % ('.'.join([str(x) for x in f.revision]), |
|
|||
100 | ['', '(DEAD)'][f.dead]) |
|
|||
101 |
|
66 | |||
102 | # add current commit to set |
|
67 | for cs in db: | |
103 | c = commit(author=cs.author, date=date, |
|
68 | if maxrev and cs.id>maxrev: | |
104 | parents=[str(p.id) for p in cs.parents], |
|
69 | break | |
105 | desc=cs.comment, branch=cs.branch or '') |
|
70 | id = str(cs.id) | |
106 | self.changeset[id] = c |
|
71 | cs.author = self.recode(cs.author) | |
107 |
|
|
72 | self.lastbranch[cs.branch] = id | |
108 | else: |
|
73 | cs.comment = self.recode(cs.comment) | |
109 | # external cvsps |
|
74 | date = util.datestr(cs.date) | |
110 | for l in util.popen(cmd): |
|
75 | self.tags.update(dict.fromkeys(cs.tags, id)) | |
111 | if state == 0: # header |
|
|||
112 | if l.startswith("PatchSet"): |
|
|||
113 | id = l[9:-2] |
|
|||
114 | if maxrev and int(id) > maxrev: |
|
|||
115 | # ignore everything |
|
|||
116 | state = 3 |
|
|||
117 | elif l.startswith("Date:"): |
|
|||
118 | date = util.parsedate(l[6:-1], ["%Y/%m/%d %H:%M:%S"]) |
|
|||
119 | date = util.datestr(date) |
|
|||
120 | elif l.startswith("Branch:"): |
|
|||
121 | branch = l[8:-1] |
|
|||
122 | self.parent[id] = self.lastbranch.get(branch, 'bad') |
|
|||
123 | self.lastbranch[branch] = id |
|
|||
124 | elif l.startswith("Ancestor branch:"): |
|
|||
125 | ancestor = l[17:-1] |
|
|||
126 | # figure out the parent later |
|
|||
127 | self.parent[id] = self.lastbranch[ancestor] |
|
|||
128 | elif l.startswith("Author:"): |
|
|||
129 | author = self.recode(l[8:-1]) |
|
|||
130 | elif l.startswith("Tag:") or l.startswith("Tags:"): |
|
|||
131 | t = l[l.index(':')+1:] |
|
|||
132 | t = [ut.strip() for ut in t.split(',')] |
|
|||
133 | if (len(t) > 1) or (t[0] and (t[0] != "(none)")): |
|
|||
134 | self.tags.update(dict.fromkeys(t, id)) |
|
|||
135 | elif l.startswith("Log:"): |
|
|||
136 | # switch to gathering log |
|
|||
137 | state = 1 |
|
|||
138 | log = "" |
|
|||
139 | elif state == 1: # log |
|
|||
140 | if l == "Members: \n": |
|
|||
141 | # switch to gathering members |
|
|||
142 | files = {} |
|
|||
143 | oldrevs = [] |
|
|||
144 | log = self.recode(log[:-1]) |
|
|||
145 | state = 2 |
|
|||
146 | else: |
|
|||
147 | # gather log |
|
|||
148 | log += l |
|
|||
149 | elif state == 2: # members |
|
|||
150 | if l == "\n": # start of next entry |
|
|||
151 | state = 0 |
|
|||
152 | p = [self.parent[id]] |
|
|||
153 | if id == "1": |
|
|||
154 | p = [] |
|
|||
155 | if branch == "HEAD": |
|
|||
156 | branch = "" |
|
|||
157 | if branch: |
|
|||
158 | latest = 0 |
|
|||
159 | # the last changeset that contains a base |
|
|||
160 | # file is our parent |
|
|||
161 | for r in oldrevs: |
|
|||
162 | latest = max(filerevids.get(r, 0), latest) |
|
|||
163 | if latest: |
|
|||
164 | p = [latest] |
|
|||
165 |
|
76 | |||
166 | # add current commit to set |
|
77 | files = {} | |
167 | c = commit(author=author, date=date, parents=p, |
|
78 | for f in cs.entries: | |
168 | desc=log, branch=branch) |
|
79 | files[f.file] = "%s%s" % ('.'.join([str(x) for x in f.revision]), | |
169 | self.changeset[id] = c |
|
80 | ['', '(DEAD)'][f.dead]) | |
170 | self.files[id] = files |
|
|||
171 | else: |
|
|||
172 | colon = l.rfind(':') |
|
|||
173 | file = l[1:colon] |
|
|||
174 | rev = l[colon+1:-2] |
|
|||
175 | oldrev, rev = rev.split("->") |
|
|||
176 | files[file] = rev |
|
|||
177 |
|
81 | |||
178 | # save some information for identifying branch points |
|
82 | # add current commit to set | |
179 | oldrevs.append("%s:%s" % (oldrev, file)) |
|
83 | c = commit(author=cs.author, date=date, | |
180 | filerevids["%s:%s" % (rev, file)] = id |
|
84 | parents=[str(p.id) for p in cs.parents], | |
181 | elif state == 3: |
|
85 | desc=cs.comment, branch=cs.branch or '') | |
182 | # swallow all input |
|
86 | self.changeset[id] = c | |
183 | continue |
|
87 | self.files[id] = files | |
184 |
|
88 | |||
185 | self.heads = self.lastbranch.values() |
|
89 | self.heads = self.lastbranch.values() | |
186 | finally: |
|
90 | finally: |
@@ -47,9 +47,6 b' def has_cvs():' | |||||
47 | re = r'Concurrent Versions System.*?server' |
|
47 | re = r'Concurrent Versions System.*?server' | |
48 | return matchoutput('cvs --version 2>&1', re) |
|
48 | return matchoutput('cvs --version 2>&1', re) | |
49 |
|
49 | |||
50 | def has_cvsps(): |
|
|||
51 | return matchoutput('cvsps -h -q 2>&1', r'cvsps version', True) |
|
|||
52 |
|
||||
53 | def has_darcs(): |
|
50 | def has_darcs(): | |
54 | return matchoutput('darcs --version', r'2\.[2-9]', True) |
|
51 | return matchoutput('darcs --version', r'2\.[2-9]', True) | |
55 |
|
52 | |||
@@ -186,7 +183,6 b' checks = {' | |||||
186 | "bzr": (has_bzr, "Canonical's Bazaar client"), |
|
183 | "bzr": (has_bzr, "Canonical's Bazaar client"), | |
187 | "bzr114": (has_bzr114, "Canonical's Bazaar client >= 1.14"), |
|
184 | "bzr114": (has_bzr114, "Canonical's Bazaar client >= 1.14"), | |
188 | "cvs": (has_cvs, "cvs client/server"), |
|
185 | "cvs": (has_cvs, "cvs client/server"), | |
189 | "cvsps": (has_cvsps, "cvsps utility"), |
|
|||
190 | "darcs": (has_darcs, "darcs client"), |
|
186 | "darcs": (has_darcs, "darcs client"), | |
191 | "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"), |
|
187 | "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"), | |
192 | "execbit": (has_executablebit, "executable bit"), |
|
188 | "execbit": (has_executablebit, "executable bit"), |
@@ -1,10 +1,10 b'' | |||||
1 | #!/bin/sh |
|
1 | #!/bin/sh | |
2 |
|
2 | |||
3 |
"$TESTDIR/hghave" cvs |
|
3 | "$TESTDIR/hghave" cvs || exit 80 | |
4 |
|
4 | |||
5 | cvscall() |
|
5 | cvscall() | |
6 | { |
|
6 | { | |
7 | cvs -f $@ |
|
7 | cvs -f "$@" | |
8 | } |
|
8 | } | |
9 |
|
9 | |||
10 | hgcat() |
|
10 | hgcat() | |
@@ -12,12 +12,9 b' hgcat()' | |||||
12 | hg --cwd src-hg cat -r tip "$1" |
|
12 | hg --cwd src-hg cat -r tip "$1" | |
13 | } |
|
13 | } | |
14 |
|
14 | |||
15 | # Test legacy configuration with external cvsps |
|
|||
16 | echo "[extensions]" >> $HGRCPATH |
|
15 | echo "[extensions]" >> $HGRCPATH | |
17 | echo "convert = " >> $HGRCPATH |
|
16 | echo "convert = " >> $HGRCPATH | |
18 | echo "graphlog = " >> $HGRCPATH |
|
17 | echo "graphlog = " >> $HGRCPATH | |
19 | echo "[convert]" >> $HGRCPATH |
|
|||
20 | echo "cvsps=cvsps -A -u --cvs-direct -q" >> $HGRCPATH |
|
|||
21 |
|
18 | |||
22 | echo % create cvs repository |
|
19 | echo % create cvs repository | |
23 | mkdir cvsrepo |
|
20 | mkdir cvsrepo | |
@@ -95,11 +92,29 b' cd ..' | |||||
95 |
|
92 | |||
96 | echo % convert again |
|
93 | echo % convert again | |
97 | hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' |
|
94 | hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' | |
98 | hgcat a |
|
|||
99 | hgcat b/c |
|
95 | hgcat b/c | |
100 |
|
96 | |||
101 | echo % convert again with --filemap |
|
97 | echo % convert again with --filemap | |
102 | hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' |
|
98 | hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' | |
103 | hgcat b/c |
|
99 | hgcat b/c | |
104 | hg -R src-filemap log --template '{rev} {desc} files: {files}\n' |
|
100 | hg -R src-filemap log --template '{rev} {desc} files: {files}\n' | |
|
101 | ||||
|
102 | echo % commit a new revision with funny log message | |||
|
103 | cd src | |||
|
104 | sleep 1 | |||
|
105 | echo e >> a | |||
|
106 | cvscall -q commit -m'funny | |||
|
107 | ---------------------------- | |||
|
108 | log message' . | grep '<--' |\ | |||
|
109 | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' | |||
|
110 | cd .. | |||
|
111 | ||||
|
112 | echo % convert again | |||
|
113 | hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' | |||
|
114 | ||||
|
115 | echo "graphlog = " >> $HGRCPATH | |||
105 | hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n' |
|
116 | hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n' | |
|
117 | ||||
|
118 | echo % testing debugcvsps | |||
|
119 | cd src | |||
|
120 | hg debugcvsps | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/' |
@@ -14,7 +14,6 b' echo "[extensions]" >> $HGRCPATH' | |||||
14 | echo "convert = " >> $HGRCPATH |
|
14 | echo "convert = " >> $HGRCPATH | |
15 | echo "graphlog = " >> $HGRCPATH |
|
15 | echo "graphlog = " >> $HGRCPATH | |
16 | echo "[convert]" >> $HGRCPATH |
|
16 | echo "[convert]" >> $HGRCPATH | |
17 | echo "cvsps=builtin" >> $HGRCPATH |
|
|||
18 | echo "cvsps.cache=0" >> $HGRCPATH |
|
17 | echo "cvsps.cache=0" >> $HGRCPATH | |
19 |
|
18 | |||
20 | echo % create cvs repository |
|
19 | echo % create cvs repository |
@@ -25,7 +25,6 b' assuming destination src-hg' | |||||
25 | initializing destination src-hg repository |
|
25 | initializing destination src-hg repository | |
26 | connecting to cvsrepo |
|
26 | connecting to cvsrepo | |
27 | scanning source... |
|
27 | scanning source... | |
28 | using builtin cvsps |
|
|||
29 | collecting CVS rlog |
|
28 | collecting CVS rlog | |
30 | 7 log entries |
|
29 | 7 log entries | |
31 | creating changesets |
|
30 | creating changesets |
@@ -34,7 +34,6 b' echo "[extensions]" >> $HGRCPATH' | |||||
34 | echo "convert = " >> $HGRCPATH |
|
34 | echo "convert = " >> $HGRCPATH | |
35 | echo "graphlog = " >> $HGRCPATH |
|
35 | echo "graphlog = " >> $HGRCPATH | |
36 | echo "[convert]" >> $HGRCPATH |
|
36 | echo "[convert]" >> $HGRCPATH | |
37 | echo "cvsps=builtin" >> $HGRCPATH |
|
|||
38 | echo "cvsps.cache=0" >> $HGRCPATH |
|
37 | echo "cvsps.cache=0" >> $HGRCPATH | |
39 | echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH |
|
38 | echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH | |
40 |
|
39 |
@@ -77,7 +77,6 b' fix file1 [MERGE from v1-1]' | |||||
77 | initializing destination proj.hg repository |
|
77 | initializing destination proj.hg repository | |
78 | connecting to *REPO* |
|
78 | connecting to *REPO* | |
79 | scanning source... |
|
79 | scanning source... | |
80 | using builtin cvsps |
|
|||
81 | collecting CVS rlog |
|
80 | collecting CVS rlog | |
82 | 12 log entries |
|
81 | 12 log entries | |
83 | creating changesets |
|
82 | creating changesets |
@@ -8,8 +8,6 b' set -e' | |||||
8 | echo "[extensions]" >> $HGRCPATH |
|
8 | echo "[extensions]" >> $HGRCPATH | |
9 | echo "convert = " >> $HGRCPATH |
|
9 | echo "convert = " >> $HGRCPATH | |
10 | echo "graphlog = " >> $HGRCPATH |
|
10 | echo "graphlog = " >> $HGRCPATH | |
11 | echo "[convert]" >> $HGRCPATH |
|
|||
12 | echo "cvsps=builtin" >> $HGRCPATH |
|
|||
13 |
|
11 | |||
14 | echo % create cvs repository with one project |
|
12 | echo % create cvs repository with one project | |
15 | mkdir cvsrepo |
|
13 | mkdir cvsrepo |
@@ -66,7 +66,6 b' revision 1.1.2.1' | |||||
66 | initializing destination proj.hg repository |
|
66 | initializing destination proj.hg repository | |
67 | connecting to *REPO* |
|
67 | connecting to *REPO* | |
68 | scanning source... |
|
68 | scanning source... | |
69 | using builtin cvsps |
|
|||
70 | collecting CVS rlog |
|
69 | collecting CVS rlog | |
71 | 15 log entries |
|
70 | 15 log entries | |
72 | creating changesets |
|
71 | creating changesets | |
@@ -102,7 +101,6 b' o 0 add file1 on trunk' | |||||
102 | initializing destination proj.hg2 repository |
|
101 | initializing destination proj.hg2 repository | |
103 | connecting to *REPO* |
|
102 | connecting to *REPO* | |
104 | scanning source... |
|
103 | scanning source... | |
105 | using builtin cvsps |
|
|||
106 | collecting CVS rlog |
|
104 | collecting CVS rlog | |
107 | 15 log entries |
|
105 | 15 log entries | |
108 | creating changesets |
|
106 | creating changesets |
@@ -12,10 +12,13 b' U src/b/c' | |||||
12 | % commit a new revision changing b/c |
|
12 | % commit a new revision changing b/c | |
13 | checking in src/b/c,v |
|
13 | checking in src/b/c,v | |
14 | % convert fresh repo |
|
14 | % convert fresh repo | |
15 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
16 | initializing destination src-hg repository |
|
15 | initializing destination src-hg repository | |
17 | connecting to cvsrepo |
|
16 | connecting to cvsrepo | |
18 | scanning source... |
|
17 | scanning source... | |
|
18 | collecting CVS rlog | |||
|
19 | 5 log entries | |||
|
20 | creating changesets | |||
|
21 | 3 changeset entries | |||
19 | sorting... |
|
22 | sorting... | |
20 | converting... |
|
23 | converting... | |
21 | 2 Initial revision |
|
24 | 2 Initial revision | |
@@ -26,10 +29,13 b' a' | |||||
26 | c |
|
29 | c | |
27 | c |
|
30 | c | |
28 | % convert fresh repo with --filemap |
|
31 | % convert fresh repo with --filemap | |
29 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
30 | initializing destination src-filemap repository |
|
32 | initializing destination src-filemap repository | |
31 | connecting to cvsrepo |
|
33 | connecting to cvsrepo | |
32 | scanning source... |
|
34 | scanning source... | |
|
35 | collecting CVS rlog | |||
|
36 | 5 log entries | |||
|
37 | creating changesets | |||
|
38 | 3 changeset entries | |||
33 | sorting... |
|
39 | sorting... | |
34 | converting... |
|
40 | converting... | |
35 | 2 Initial revision |
|
41 | 2 Initial revision | |
@@ -47,9 +53,12 b' 0 Initial revision files: b/c' | |||||
47 | checking in src/a,v |
|
53 | checking in src/a,v | |
48 | checking in src/b/c,v |
|
54 | checking in src/b/c,v | |
49 | % convert again |
|
55 | % convert again | |
50 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
51 | connecting to cvsrepo |
|
56 | connecting to cvsrepo | |
52 | scanning source... |
|
57 | scanning source... | |
|
58 | collecting CVS rlog | |||
|
59 | 7 log entries | |||
|
60 | creating changesets | |||
|
61 | 4 changeset entries | |||
53 | sorting... |
|
62 | sorting... | |
54 | converting... |
|
63 | converting... | |
55 | 0 ci1 |
|
64 | 0 ci1 | |
@@ -59,9 +68,12 b' c' | |||||
59 | c |
|
68 | c | |
60 | c |
|
69 | c | |
61 | % convert again with --filemap |
|
70 | % convert again with --filemap | |
62 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
63 | connecting to cvsrepo |
|
71 | connecting to cvsrepo | |
64 | scanning source... |
|
72 | scanning source... | |
|
73 | collecting CVS rlog | |||
|
74 | 7 log entries | |||
|
75 | creating changesets | |||
|
76 | 4 changeset entries | |||
65 | sorting... |
|
77 | sorting... | |
66 | converting... |
|
78 | converting... | |
67 | 0 ci1 |
|
79 | 0 ci1 | |
@@ -78,19 +90,24 b' T a' | |||||
78 | T b/c |
|
90 | T b/c | |
79 | checking in src/b/c,v |
|
91 | checking in src/b/c,v | |
80 | % convert again |
|
92 | % convert again | |
81 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
82 | connecting to cvsrepo |
|
93 | connecting to cvsrepo | |
83 | scanning source... |
|
94 | scanning source... | |
|
95 | collecting CVS rlog | |||
|
96 | 8 log entries | |||
|
97 | creating changesets | |||
|
98 | 5 changeset entries | |||
84 | sorting... |
|
99 | sorting... | |
85 | converting... |
|
100 | converting... | |
86 | 0 ci2 |
|
101 | 0 ci2 | |
87 | a |
|
|||
88 | c |
|
102 | c | |
89 | d |
|
103 | d | |
90 | % convert again with --filemap |
|
104 | % convert again with --filemap | |
91 | warning: support for external cvsps is deprecated and will be removed in Mercurial 1.4 |
|
|||
92 | connecting to cvsrepo |
|
105 | connecting to cvsrepo | |
93 | scanning source... |
|
106 | scanning source... | |
|
107 | collecting CVS rlog | |||
|
108 | 8 log entries | |||
|
109 | creating changesets | |||
|
110 | 5 changeset entries | |||
94 | sorting... |
|
111 | sorting... | |
95 | converting... |
|
112 | converting... | |
96 | 0 ci2 |
|
113 | 0 ci2 | |
@@ -101,15 +118,137 b' 3 ci1 files: b/c' | |||||
101 | 2 update tags files: .hgtags |
|
118 | 2 update tags files: .hgtags | |
102 | 1 ci0 files: b/c |
|
119 | 1 ci0 files: b/c | |
103 | 0 Initial revision files: b/c |
|
120 | 0 Initial revision files: b/c | |
|
121 | % commit a new revision with funny log message | |||
|
122 | checking in src/a,v | |||
|
123 | % convert again | |||
|
124 | connecting to cvsrepo | |||
|
125 | scanning source... | |||
|
126 | collecting CVS rlog | |||
|
127 | 9 log entries | |||
|
128 | creating changesets | |||
|
129 | 6 changeset entries | |||
|
130 | sorting... | |||
|
131 | converting... | |||
|
132 | 0 funny | |||
|
133 | o 6 (branch) funny | |||
|
134 | | ---------------------------- | |||
|
135 | | log message files: a | |||
104 | o 5 (branch) ci2 files: b/c |
|
136 | o 5 (branch) ci2 files: b/c | |
|
137 | ||||
|
138 | o 4 () ci1 files: a b/c | |||
105 | | |
|
139 | | | |
106 | | o 4 () ci1 files: a b/c |
|
140 | o 3 () update tags files: .hgtags | |
107 | | | |
|
141 | | | |
108 | | o 3 () update tags files: .hgtags |
|
142 | o 2 () ci0 files: b/c | |
109 | | | |
|
143 | | | |
110 | | o 2 () ci0 files: b/c |
|
|||
111 | |/ |
|
|||
112 | | o 1 (INITIAL) import files: |
|
144 | | o 1 (INITIAL) import files: | |
113 | |/ |
|
145 | |/ | |
114 | o 0 () Initial revision files: a b/c |
|
146 | o 0 () Initial revision files: a b/c | |
115 |
|
147 | |||
|
148 | % testing debugcvsps | |||
|
149 | collecting CVS rlog | |||
|
150 | 9 log entries | |||
|
151 | creating changesets | |||
|
152 | 8 changeset entries | |||
|
153 | --------------------- | |||
|
154 | PatchSet 1 | |||
|
155 | Date: | |||
|
156 | Author: | |||
|
157 | Branch: HEAD | |||
|
158 | Tag: (none) | |||
|
159 | Branchpoints: INITIAL | |||
|
160 | Log: | |||
|
161 | Initial revision | |||
|
162 | ||||
|
163 | Members: | |||
|
164 | a:INITIAL->1.1 | |||
|
165 | ||||
|
166 | --------------------- | |||
|
167 | PatchSet 2 | |||
|
168 | Date: | |||
|
169 | Author: | |||
|
170 | Branch: HEAD | |||
|
171 | Tag: (none) | |||
|
172 | Branchpoints: INITIAL, branch | |||
|
173 | Log: | |||
|
174 | Initial revision | |||
|
175 | ||||
|
176 | Members: | |||
|
177 | b/c:INITIAL->1.1 | |||
|
178 | ||||
|
179 | --------------------- | |||
|
180 | PatchSet 3 | |||
|
181 | Date: | |||
|
182 | Author: | |||
|
183 | Branch: INITIAL | |||
|
184 | Tag: start | |||
|
185 | Log: | |||
|
186 | import | |||
|
187 | ||||
|
188 | Members: | |||
|
189 | a:1.1->1.1.1.1 | |||
|
190 | b/c:1.1->1.1.1.1 | |||
|
191 | ||||
|
192 | --------------------- | |||
|
193 | PatchSet 4 | |||
|
194 | Date: | |||
|
195 | Author: | |||
|
196 | Branch: HEAD | |||
|
197 | Tag: (none) | |||
|
198 | Log: | |||
|
199 | ci0 | |||
|
200 | ||||
|
201 | Members: | |||
|
202 | b/c:1.1->1.2 | |||
|
203 | ||||
|
204 | --------------------- | |||
|
205 | PatchSet 5 | |||
|
206 | Date: | |||
|
207 | Author: | |||
|
208 | Branch: HEAD | |||
|
209 | Tag: (none) | |||
|
210 | Branchpoints: branch | |||
|
211 | Log: | |||
|
212 | ci1 | |||
|
213 | ||||
|
214 | Members: | |||
|
215 | a:1.1->1.2 | |||
|
216 | ||||
|
217 | --------------------- | |||
|
218 | PatchSet 6 | |||
|
219 | Date: | |||
|
220 | Author: | |||
|
221 | Branch: HEAD | |||
|
222 | Tag: (none) | |||
|
223 | Log: | |||
|
224 | ci1 | |||
|
225 | ||||
|
226 | Members: | |||
|
227 | b/c:1.2->1.3 | |||
|
228 | ||||
|
229 | --------------------- | |||
|
230 | PatchSet 7 | |||
|
231 | Date: | |||
|
232 | Author: | |||
|
233 | Branch: branch | |||
|
234 | Tag: (none) | |||
|
235 | Log: | |||
|
236 | ci2 | |||
|
237 | ||||
|
238 | Members: | |||
|
239 | b/c:1.1->1.1.2.1 | |||
|
240 | ||||
|
241 | --------------------- | |||
|
242 | PatchSet 8 | |||
|
243 | Date: | |||
|
244 | Author: | |||
|
245 | Branch: branch | |||
|
246 | Tag: (none) | |||
|
247 | Log: | |||
|
248 | funny | |||
|
249 | ---------------------------- | |||
|
250 | log message | |||
|
251 | ||||
|
252 | Members: | |||
|
253 | a:1.2->1.2.2.1 | |||
|
254 |
@@ -29,8 +29,6 b' hgcat()' | |||||
29 | echo "[extensions]" >> $HGRCPATH |
|
29 | echo "[extensions]" >> $HGRCPATH | |
30 | echo "convert = " >> $HGRCPATH |
|
30 | echo "convert = " >> $HGRCPATH | |
31 | echo "graphlog = " >> $HGRCPATH |
|
31 | echo "graphlog = " >> $HGRCPATH | |
32 | echo "[convert]" >> $HGRCPATH |
|
|||
33 | echo "cvsps=builtin" >> $HGRCPATH |
|
|||
34 |
|
32 | |||
35 | echo "% create cvs repository" |
|
33 | echo "% create cvs repository" | |
36 | mkdir cvsmaster |
|
34 | mkdir cvsmaster |
@@ -117,23 +117,8 b' convert a foreign SCM repository to a Me' | |||||
117 | starting directory will be converted, and that any directory |
|
117 | starting directory will be converted, and that any directory | |
118 | reorganization in the CVS sandbox is ignored. |
|
118 | reorganization in the CVS sandbox is ignored. | |
119 |
|
119 | |||
120 | Because CVS does not have changesets, it is necessary to collect |
|
|||
121 | individual commits to CVS and merge them into changesets. CVS source uses |
|
|||
122 | its internal changeset merging code by default but can be configured to |
|
|||
123 | call the external 'cvsps' program by setting: |
|
|||
124 |
|
||||
125 | --config convert.cvsps='cvsps -A -u --cvs-direct -q' |
|
|||
126 |
|
||||
127 | This option is deprecated and will be removed in Mercurial 1.4. |
|
|||
128 |
|
||||
129 | The options shown are the defaults. |
|
120 | The options shown are the defaults. | |
130 |
|
121 | |||
131 | Internal cvsps is selected by setting |
|
|||
132 |
|
||||
133 | --config convert.cvsps=builtin |
|
|||
134 |
|
||||
135 | and has a few more configurable options: |
|
|||
136 |
|
||||
137 | --config convert.cvsps.cache=True (boolean) |
|
122 | --config convert.cvsps.cache=True (boolean) | |
138 | Set to False to disable remote log caching, for testing and debugging |
|
123 | Set to False to disable remote log caching, for testing and debugging | |
139 | purposes. |
|
124 | purposes. |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now