##// END OF EJS Templates
convert/cvs: stop supporting external cvsps
Patrick Mezard -
r9543:56a5f805 default
parent child Browse files
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 if not self.ui.configbool('convert', 'cvsps.cache', True):
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 self.files[id] = files
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 cvsps || exit 80
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