/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.223 - (show annotations)
Thu Oct 31 04:06:01 2002 UTC (11 years, 5 months ago) by kaz
Branch: MAIN
Changes since 1.222: +52 -0 lines
* code/mcvs-package.lisp: New file, defines META-CVS package.

* code/purge.lisp: Put all symbols in new package.
* code/restore.lisp: Likewise.
* code/paths.lisp: Likewise.
* code/install.sh: Likewise.
* code/restart.lisp: Likewise.
* code/update.lisp: Likewise.
* code/move.lisp: Likewise.
* code/grab.lisp: Likewise.
* code/unix.lisp: Likewise.
* code/slot-refs.lisp: Likewise.
* code/prop.lisp: Likewise.
* code/multi-hash.lisp: Likewise.
* code/rcs-utils.lisp: Likewise.
* code/branch.lisp: Likewise.
* code/find-bind.lisp: Likewise.
* code/execute.lisp: Likewise.
* code/link.lisp: Likewise.
* code/split.lisp: Likewise.
* code/watch.lisp: Likewise.
* code/clisp-unix.lisp: Likewise.
* code/add.lisp: Likewise.
* code/chatter.lisp: Likewise.
* code/print.lisp: Likewise.
* code/types.lisp: Likewise.
* code/remove.lisp: Likewise.
* code/convert.lisp: Likewise.
* code/error.lisp: Likewise.
* code/options.lisp: Likewise.
* code/dirwalk.lisp: Likewise.
* code/checkout.lisp: Likewise.
* code/generic.lisp: Likewise.
* code/sync.lisp: Likewise.
* code/create.lisp: Likewise.
* code/memoize.lisp: Likewise.
* code/seqfuncs.lisp: Likewise.
* code/cmucl-unix.lisp: Likewise.
* code/remap.lisp: Likewise.

* code/mapping.lisp: Put symbols in new package. Replace use
of CLISP specific substring function with subseq.
* code/filt.lisp: Likewise.

* code/mcvs-main.lisp: Put symbols in new package. The mcvs
function is renamed to main.

* code/install.sh: Generate mcvs script that uses qualified name
of new startup functiont to start the software.
1 2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
2
3 * code/mcvs-package.lisp: New file, defines META-CVS package.
4
5 * code/purge.lisp: Put all symbols in new package.
6 * code/restore.lisp: Likewise.
7 * code/paths.lisp: Likewise.
8 * code/install.sh: Likewise.
9 * code/restart.lisp: Likewise.
10 * code/update.lisp: Likewise.
11 * code/move.lisp: Likewise.
12 * code/grab.lisp: Likewise.
13 * code/unix.lisp: Likewise.
14 * code/slot-refs.lisp: Likewise.
15 * code/prop.lisp: Likewise.
16 * code/multi-hash.lisp: Likewise.
17 * code/rcs-utils.lisp: Likewise.
18 * code/branch.lisp: Likewise.
19 * code/find-bind.lisp: Likewise.
20 * code/execute.lisp: Likewise.
21 * code/link.lisp: Likewise.
22 * code/split.lisp: Likewise.
23 * code/watch.lisp: Likewise.
24 * code/clisp-unix.lisp: Likewise.
25 * code/add.lisp: Likewise.
26 * code/chatter.lisp: Likewise.
27 * code/print.lisp: Likewise.
28 * code/types.lisp: Likewise.
29 * code/remove.lisp: Likewise.
30 * code/convert.lisp: Likewise.
31 * code/error.lisp: Likewise.
32 * code/options.lisp: Likewise.
33 * code/dirwalk.lisp: Likewise.
34 * code/checkout.lisp: Likewise.
35 * code/generic.lisp: Likewise.
36 * code/sync.lisp: Likewise.
37 * code/create.lisp: Likewise.
38 * code/memoize.lisp: Likewise.
39 * code/seqfuncs.lisp: Likewise.
40 * code/cmucl-unix.lisp: Likewise.
41 * code/remap.lisp: Likewise.
42
43 * code/mapping.lisp: Put symbols in new package. Replace use
44 of CLISP specific substring function with subseq.
45 * code/filt.lisp: Likewise.
46
47 * code/mcvs-main.lisp: Put symbols in new package. The mcvs
48 function is renamed to main.
49
50 * code/install.sh: Generate mcvs script that uses qualified name
51 of new startup functiont to start the software.
52
53 2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
54
55 * code/unix-bindings/unix.lisp: Rewrote defpackage to take only
56 selected symbols from CLISP's FFI package rather using the whole
57 thing. FFI, and the packages it uses, are moving targets.
58 The symbol def-c-call-out is interned in unix-funcs.
59 (unix-funcs:def-c-call-out): New internal macro. CLISP says that
60 ffi:def-c-call-out is obsolescent.
61
62 * code/unix-bindings/Makefile: The ``clean'' target removes
63 unix.lib, not only unix.fas.
64
65 2002-10-27 Kaz Kylheku <kaz@ashi.footprints.net>
66
67 Bugfix to the directory restructuring code. A clobbering
68 file add was not actually removing the clobbered file, but leaving
69 it up to the synchronization algorithm, so the time-stamp would
70 decide whether the local file gets clobbered by the repository one,
71 or whether it wins.
72
73 * code/mapping.lisp (mapping-update): Logic for handling added
74 file ensures that a clobbered local file is removed first.
75
76 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
77
78 New link command for creating symlinks.
79
80 * mcvs-main.lisp (*link-options*): New option constant.
81 (*mcvs-command-table*): Entries for new command added.
82 (*usage*): Help text added.
83
84 * link.lisp: New file.
85 (mcvs-link, mcvs-link-wrapper): New functions.
86
87 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
88
89 * code/grab.lisp (*grab-help*): Rewritten.
90
91 * code/checkout.lisp (*export-help*): Formatted for 80 columns.
92
93 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
94
95 * code/mcvs-main.lisp (*usage*): Expand tabs to spaces.
96
97 * code/add.lisp (*add-help*): Likewise.
98
99 * code/remove.lisp (*remove-help*): Likewise.
100
101 * code/create.lisp (*create-help*): Likewise.
102
103 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
104
105 * code/purge.lisp (mcvs-purge): Get rid the processing of the
106 nonexistent -n option from purge code. The global option -n does an
107 adequate job of implementing a dry run.
108
109 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
110
111 * code/mapping.lisp (mapping-removed-files): Skip over the MCVS/CVS
112 directory, which can contain CVS-generated files with F- names and a ,t
113 suffix. These trip up the algorithm.
114
115 2002-10-21 Kaz Kylheku <kaz@ashi.footprints.net>
116
117 Add help to move command.
118
119 * code/mcvs-main.lisp (*mcvs-command-table*): Added *move-help*.
120
121 * code/move.lisp (*mcvs-help*): New constant.
122
123 2002-10-20 Kaz Kylheku <kaz@ashi.footprints.net>
124
125 Fix broken ``filt -r''.
126
127 * code/mapping.lisp (mapping-read-raw-map): New function; reads
128 map from stream and does sanity check.
129 (mapping-read): Argument can be a filename or stream. Call to
130 mapping-read-raw-map to factor out common code for both cases.
131
132 * code/filt.lisp (filt-select-map): This was still just
133 reading the raw structure from the cvs coprocess, which worked under
134 the old map format, when the internal and external representations
135 were the same. Now it calls mapping-read on the stream.
136
137 2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
138
139 * UPGRADE-EXISTING: New file.
140
141 2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
142
143 * code/mcvs-main.lisp: Clear out *modules* list before requiring
144 modules. This is needed so that mcvs-upgrade works, because there
145 is already a populated list in the Lisp image.
146
147 2002-10-17 Kaz Kylheku <kaz@ashi.footprints.net>
148
149 Detect failure to start text editor.
150
151 * code/unix.lisp (*editor*, invoke-editor-on): Change name of *editor*
152 to *mcvs-editor*, due to name-clash with a CLISP extension!
153
154 * code/mcvs-main.lisp (mcvs-execute): Likewise.
155
156 * code/types.lisp (types-let-user-edit): Provide an individual
157 restart-case block around the invocation of the text editor,
158 which lets the user re-try the editor.
159
160 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
161
162 * code/install.sh: generate a script called mcvs-upgrade.
163
164 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
165
166 * code/prop.lisp (mcvs-prop): Read *mcvs-map*, not *mcvs-map-local*.
167
168 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
169
170 * code/mcvs-main.lisp (*watchers-options*): New constant.
171 (*edit-options*): Likewise.
172 (*unedit-options*): Likewise.
173 (*editors-options*): Likewise.
174 (*mcvs-command-table*): Added watchers, edit unedit, and editors
175 commands.
176 (*usage*): Updated.
177
178 * code/generic.lisp (mcvs-watchers-wrapper, mcvs-edit-wrapper,
179 mcvs-unedit-wrapper, mcvs-editors-wrapper): New functions.
180
181 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
182
183 * code/mcvs-main.lisp (*usage*): Describe export and watch commands.
184
185 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
186
187 * code/mcvs-main.lisp (*watch-options*): New constant.
188 (*mcvs-command-table*): New entry for watch command.
189
190 * code/watch.lisp: New file.
191
192 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
193
194 * code/mcvs-main.lisp (*export-options*): New constant.
195 (*mcvs-command-table*): New entries for export command.
196
197 * code/checkout.lisp (mcvs-checkout): New keyword to specify export
198 behavior. This causes cvs export to be run instead of checkout,
199 and the MCVS directory to be deleted after.
200 (mcvs-checkout-wrapper): Common function factored out into a flet.
201 (mcvs-export-wrapper): New function. Verifies that one of -D and -r
202 options is present, then runs mcvs-checkout, specifying export
203 behavior.
204
205 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
206
207 * code/mcvs-main.lisp (*update-options*): Added -C option.
208
209 * code/update.lisp (mcvs-update): Fall back on the mcvs-generic
210 if --metaonly or --nometa is specified to run CVS on specific
211 files.
212
213 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
214
215 * code/filt.lisp (mcvs-filt): Do not filter F- names if
216 immediately preceded by MCVS/ prefix.
217
218 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
219
220 * code/clisp-unix.lisp (execute-program): Provide debug traces
221 for command execution.
222
223 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
224
225 Rethink some decisions in the previous change. Reusing the
226 name posix.lisp for a new file will cause problems for people
227 using mcvs grab to keep up with Meta-CVS patches.
228
229 * code/posix.lisp: Renamed to unix.lisp.
230
231 * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for
232 the sake of consistency.
233
234 * code/system.lisp: Updated.
235
236 * code/cmucl.lisp: Likewise.
237
238 Don't call a new file posix.lisp, because
239 it can create confusion with the old file that used to be called
240 posix.lisp,
241
242 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
243
244 Minor reorganization.
245
246 * code/posix.lisp: File renamed to paths.lisp, module renamed
247 to "paths".
248 (*editor*): Variable removed.
249 (arglist-to-command-string, execute-programs-xargs,
250 invoke-editor-on): Functions removed.
251
252 * code/posix.lisp: New file.
253 (*editor*): Variable moved here from paths.lisp.
254 (arglist-to-command-string, invoke-editor-on): Functions moved here
255 from paths.lisp.
256
257 * code/editor.lisp: New file.
258 (*argument-limit*): Variable definition moved here.
259 (execute-programs-xargs): Function moved here from paths.lisp.
260
261 * code/clisp-unix.lisp: Renamed to clisp-posix.lisp.
262 Requires "posix" module now.
263 (*argument-limit*): Variable removed.
264
265 * code/system.lisp: Remove references to old clisp-linux module.
266 Added requires for new paths and execute modules.
267
268 * code/cmucl-unix.lisp (*argument-limit*): Variable definition removed.
269
270 2002-10-09 Kaz Kylheku <kaz@ashi.footprints.net>
271
272 * code/add.lisp (*add-help*): Remove spurious text cut and pasted from
273 checkout help.
274
275 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
276
277 * code/prop.lisp (mcvs-prop): Result of real-to-abstract-path
278 must be canonicalized.
279
280 * code/remove.lisp (mcvs-remove): Likewise.
281
282 * code/generic.lisp (mcvs-generic): Likewise.
283
284 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
285
286 * code/move.lisp (move-guts, mcvs-move): Canonicalize the destination
287 path in mcvs-move, rather than mcvs-guts.
288
289 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
290
291 * code/create.lisp (mcvs-create): Add the DISPLACED filename
292 to the .cvsignore file.
293
294 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
295
296 * code/posix.lisp (path-prefix-equal): Handle empty strings.
297
298 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
299
300 * code/move.lisp (move-guts): If an error occurs for each
301 source in a multiple move, and the user skips each source,
302 generate the error that all sources were skipped.
303
304 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
305
306 * code/move.lisp (source-check): Generate error if a move
307 of the sandbox root is attempted.
308
309 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
310
311 * code/remap.lisp (mcvs-remap): Preserve property lists of
312 mapping entries, and pick up changes in execute permission.
313
314 * code/mapping.lisp (mapping-convert-out): If the mapping entry's
315 executable flag is nil, then remove the :exec entry from the property
316 list.
317
318 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
319
320 * code/mapping.lisp (equal-filemaps): Repair completely broken
321 function.
322
323 * code/move.lisp (mcvs-move): Added little hack for turning
324 no-op moves into errors. Without this the behavior is confusing,
325 since the program appears to do nothing.
326
327 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
328
329 * code/add.lisp (mcvs-add): Provide a continue restart around
330 the code that builds up the expanded-paths for each iteration of the
331 loop. Without this, errors in that code cause the program to bail, even
332 though errors in the rest of the loop body are continuable.
333
334 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
335
336 * code/dirwalk.lisp (dirwalk): If the argument is not a directory,
337 the callback must still be invoked. This was done prior to
338 a 2002-05-20 commit. I can't quite remember why it was changed;
339 but I seem to recall thinking about the new dirwalk-skip catch,
340 and how it must be always visible to the callback closure, so
341 that the (skip) mechanism works.
342
343 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
344
345 * code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting
346 level, so that an error on one item won't abort the whole operation.
347
348 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
349
350 * code/convert.lisp (mcvs-convert): Maintenance so that this tool
351 at least runs, even though it doesn't do anything resembling a
352 reasonable conversion job.
353
354 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
355
356 * code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the
357 case when /dev/urandom is available.
358
359 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
360
361 * code/find-bind.lisp (find-bind): Allow empty variable list, as
362 described by the documented syntax.
363
364 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
365
366 * code/error.lisp (mcvs-error-handler): Simplify roundabout way
367 of printing error message.
368
369 * code/mapping.lisp (mapping-write): Incorporate the low level error
370 message into the more informative error message.
371
372 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
373
374 Error messages no longer specify prefixes like "mcvs:" or
375 "mcvs-remove:".
376
377 When no restarts are available, the error handler now adds the "mcvs:"
378 prefix when dumping the error text to the standard error stream,
379 and also adds a terminating newline.
380
381 The inability to write to the MAP file is converted to a more
382 informative error message.
383
384 New --debug option is supported to set the chatter level to 3.
385
386 * code/chatter.lisp: Use the symbolic constant when defining the
387 default chatter level value.
388
389 * code/mcvs-main.lisp (*cvs-options*, mcvs-help, mcvs-execute): Added
390 support for --debug option, and removed of prefixes from error
391 messages.
392
393 * code/options.lisp (filter-global-options): Support --debug.
394 (parse-opt): Removed prefixes from error messages.
395
396 * code/mapping.lisp (mapping-rename-files, mapping-dupe-check,
397 mapping-convert-in, mapping-synchronize, mapping-update): Removed
398 prefixes from error messages.
399 (mapping-write): Trap write error and convert to more informative
400 error message.
401
402 * code/error.lisp (mcvs-error-handler): In the case when no restarts
403 are available, format the error message by adding the mcvs: prefix
404 and a terminating newline.
405
406 * code/purge.lisp (mcvs-purge): Removed prefixes from error messages.
407
408 * code/restore.lisp (mcvs-restore): Likewise.
409
410 * code/move.lisp (move-guts, mcvs-move): Likewise.
411
412 * code/grab.lisp (mcvs-grab): Likewise.
413
414 * code/prop.lisp (mcvs-prop): Likewise.
415
416 * code/filt.lisp (filt-select-map, mcvs-filt): Likewise.
417
418 * code/branch.lisp (where-is-the-repository, mcvs-branch,
419 cvs-make-or-advance-tag, mcvs-merge, mcvs-list-branches,
420 mcvs-switch-wrapper): Likewise.
421
422 * code/add.lisp (mcvs-add, mcvs-add): Likewise.
423
424 * code/remove.lisp (mcvs-remove): Likewise.
425
426 * code/convert.lisp (classify-tags, mcvs-convert): Likewise.
427
428 * code/checkout.lisp (mcvs-checkout): Likewise.
429
430 * code/generic.lisp (mcvs-generic, mcvs-diff-wrapper): Likewise.
431
432 * code/create.lisp (mcvs-create, mcvs-create): Likewise.
433
434 * code/remap.lisp (mcvs-remap, mcvs-remap): Likewise.
435
436 2002-09-25 Kaz Kylheku <kaz@ashi.footprints.net>
437
438 Minimal changes for building on Cygwin.
439
440 * code/install.sh (space_check, dash_check): Function definitions
441 modified to conform to bash2.
442
443 * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*):
444 New special variables.
445 (guid-gen): Rewritten to fall back on the Common Lisp random
446 function if /dev/urandom is not available.
447
448 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
449
450 * code/mcvs-main.lisp (*options*): New variable. Gives
451 scripts access to to some global options. The *args* variable now
452 holds only the remaining arguments after the options.
453 (mcvs-execute): Sets up *args* and *options* accordingly.
454 No longer parses out the --error-continue and --error-terminate
455 options.
456
457 * code/options.lisp (filter-global-options): The handling of
458 --error-continue and --error-terminate is done here. This is
459 the place to handle options that must be removed (not passed
460 down to CVS) and which do not trigger immediate actions in
461 mcvs-execute.
462
463 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
464
465 * code/mcvs-main.lisp (*args*): New global variable. Gives
466 scripts access to command line.
467
468 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
469
470 * code/mcvs-main.lisp (*cvs-options*): Add -i parameter which
471 takes the name of a script to invoke.
472 (*usage*): Updated to describe new option.
473 (mcvs-execute): Parse out -i option and load the specified file.
474
475 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
476
477 * code/install.sh: Don't specify -K full option when running
478 specific, generated CLISP image already. When generating mcvs.mem,
479 load the compiled version mcvs-main, rather than mcvs-main.lisp.
480
481 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
482
483 * code/install.sh: Check that the installation target path won't
484 look like a command line option to shell commands.
485
486 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
487
488 * code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.
489
490 * code/remove.lisp (*remove-help*): New string constant.
491
492 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
493
494 * code/grab.lisp (mcvs-grab): Inspect the execute permissions
495 of stable and moved files, and update the :EXEC propery of
496 their mapping entries accordingly. In other words, grab changes
497 in execute permissions properly.
498
499 2002-09-18 Kaz Kylheku <kaz@ashi.footprints.net>
500
501 * code/restore.lisp (mcvs-restore): Was still generating old-style
502 mapping entries.
503
504 * code/clisp-unix.lisp (executable-p (string)): New method for
505 executable-p generic function that takes a filename.
506
507 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
508
509 * code/install.sh: Check that the installation target path
510 does not contain any spaces. It cannot, because it is used
511 in the #! line of an interpreter script. As a consequence of
512 this check, whitespace precautions in the expansion of $TARGET,
513 $TARGET_LIB and $TARGET_BIN have been removed.
514
515 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
516
517 * code/checkout.lisp (mcvs-checkout): If a subdirectory path
518 is specified, verify that it is relative, and that it points
519 within the module.
520
521 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
522
523 * code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
524 options.
525 (*mcvs-command-table*): Added help for checkout and add.
526
527 * code/checkout.lisp (*checkout-help*): New string constant.
528
529 * code/add.help (*add-help*): Likewise.
530
531 * code/create.lisp (*create-help*): Mention interactive file
532 type specification.
533
534 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
535
536 * code/mcvs-main.lisp (*mcvs-command-table*): Add *grab-help*.
537
538 * code/grab.lisp (*grab-help*): New string constant.
539
540 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
541
542 * code/clisp-linux.lisp: File removed.
543
544 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
545
546 Implement help text for create command.
547
548 * code/mcvs-main.lisp (mcvs-help): Fixes.
549 (*mcvs-command-table*): Add *create-help*.
550
551 * code/create.lisp (*create-help*): New string constant.
552
553 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
554
555 Revamping help system to support more detailed help
556 for individual commands.
557
558 * code/mcvs-main.lisp (mcvs-help): New function.
559 (*help-options*): New constant.
560 (*mcvs-command-table*): New entry in each sublist element;
561 this is either nil, or a string containing help text.
562 (mcvs-execute): Update to use new table structure.
563
564 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
565
566 * code/filt.lisp (mcvs-filt): Bugfix: was trying to
567 use NIL as if it were a mapping-entry struct after an unsuccessful
568 gethash.
569
570 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
571
572 Fix installation braindamage. The problem is that
573 the linkkit material is architecture specific; it was
574 wrong to copy that from CLISP.
575
576 * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New
577 variables, dynamically computed from clisp's location.
578 The script now runs the clisp-link under $CLISP_LIB rather
579 than using a replica, and uses $CLISP_LIB/linkkit rather
580 than a replica linkkit.
581 (CLISP): Variable renamed to LISPRUN.
582
583 * code/clisp-link: File removed.
584 * code/linkkit/modules.d: Likewise.
585 * code/linkkit/modules.c: Likewise.
586 * code/linkkit/clisp.h: Likewise.
587
588 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
589
590 Fix mistake dating back to April.
591
592 * code/branch.lisp (mcvs-merge): Symbol T was being invoked
593 as function in the case that merge is invoked on a sandbox
594 that is sticky to a non-branch tag.
595
596 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
597
598 Another stupid error.
599
600 * code/create.lisp (mcvs-create): Fix use to unbound
601 variable file-info which should be fi.
602
603 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
604
605 Fix stupid error.
606
607 * code/mcvs-main.lisp (*move-options*): New constant.
608 (*mcvs-command-table*): Fix broken entry for "move" and "mv".
609
610 2002-09-07 Kaz Kylheku <kaz@ashi.footprints.net>
611
612 Eliminate inappropriate pluralization in messages.
613
614 * code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
615 if the parameter is other than 1.
616
617 * code/options.lisp (parse-opt): Likewise.
618
619 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
620
621 * code/prop.lisp (mcvs-prop): Support --value option to
622 associate an arbitrary value with a property indicator.
623
624 * code/mcvs-main.lisp (*usage*): Describe --value and
625 clarify syntax.
626
627 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
628
629 Unify command option parsing, and enable it to handle options with
630 any number of required parameters.
631
632 * code/options.lisp (parse-opt): Function rewritten. Argument
633 syntax and semantics have changed. Options are specified
634 as an association list whose member are string-integer
635 pairs. The string is the option name, the integer specifies
636 the number of required parameters.
637 (option-spec-expand): New function.
638 (option-spec): New macro.
639 (define-option-constant): New macro.
640
641 * code/mcvs-main.lisp (*cvs-options-arg*): Constant removed.
642 (*cvs-options*, *create-options*, *grab-options*, *checkout-options*,
643 *add-options*, *remove-options*, *update-options*,
644 *switch-options*, *commit-options*, *diff-options*, *tag-options*,
645 *log-options*, *status-options*, *annotate-options, *filt-options*,
646 *convert-options*, *branch-options*, *merge-options*,
647 *remerge-options*, *list-branches-options*, *remap-options*,
648 *purge-options*, *restore-options*, *prop-options*): Constant
649 definitions refactored using define-option-constant macro.
650 (*mcvs-command-table*): Use , rather than ,@ to insert
651 option specs.
652 (*usage*): Suggest cleaner syntax for prop options.
653 (mcvs-execute): Switch to new parse-opt.
654
655 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
656
657 New prop command for manipulating property lists.
658
659 * code/mcvs-main.lisp (*prop-options*): New constant.
660 (*mcvs-command-table*): New entry.
661 (*usage*): Update.
662
663 * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally
664 set execute slot based on :exec property.
665
666 * code/prop.lisp: New file.
667
668 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
669
670 Be transparent with respect to mapping entry property lists:
671 preserve unrecognized indicators and values.
672
673 * code/mapping.lisp (mapping-entry): New slot, raw-plist,
674 records raw property list from external mapping representation.
675 (mapping-entry-parse-attributes): Renamed to mapping-entry-parse-plist.
676 Argument dropped; parses raw-plist slot instead.
677 (mapping-convert-in): Set raw-plist slot to value of fourth list
678 element of :FILE entry, or fifth list element of :SYMLINK entry.
679 (mapping-convert-out): Unify any slot values that are represented as
680 properties into raw-plist, and insert any non-empty plists into
681 external representation.
682
683 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
684
685 Low level support for versioning executable bit.
686
687 * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout
688 function.
689
690 * code/clisp-unix.lisp (executable-p, make-executable,
691 make-non-executable): New generic functions.
692 (executable-p (file-info), make-executable (file-info),
693 make-executable (string), make-non-executable (file-info),
694 make-non-executable (string)): New methods.
695
696 * code/add.lisp (mcvs-add): Record whether new file is
697 executable or not, by setting executable slot in mapping-entry.
698
699 * code/create.lisp (mcvs-create): Likewise.
700
701 * code/sync.lisp (synchronize-files): New parameter,
702 should-be-executable, tells function which way to set
703 permissions after synchronizing files.
704
705 * code/mapping.lisp (mapping-entry): New slot, executable.
706 (mapping-entry-parse-attributes): New function, parses
707 new optional property list from :FILE entries in a mapping.
708 (mapping-convert-in): Parse property list that may be present in fourth
709 list element of a :FILE entry.
710 (mapping-convert-out): Write out executable flag as
711 :EXEC property, if true.
712 (mapping-synchronize): Pass executable flag down to synchronize-files.
713
714 2002-09-02 Kaz Kylheku <kaz@ashi.footprints.net>
715
716 * code/grab.lisp (determine-moved-files): Rename local
717 variable for clarity.
718 (determine-moved-symlinks): Actually compute what symlinks
719 are moved. Takes one more argument, the stable-files list.
720 (mcvs-grab): Fix small destructuring-bind bug in symlink
721 moving code. Also, read the targets of moved symlinks into
722 the map, like it is already done with stable symlinks.
723
724 2002-09-01 Kaz Kylheku <kaz@ashi.footprints.net>
725
726 * code/grab.lisp (mcvs-grab): Iterate over stable symlinks,
727 and incorporate changed targets into the mapping. In other
728 words, notice and incorporate retargetted symlinks.
729
730 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
731
732 Merging new symbolic link support from symlink-branch.
733
734 * code/mapping.lisp (mapping-update): Resolve merge conflict.
735 The branch fixed the 2002-08-24 bug also.
736
737 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
738
739 * code/grab.lisp (move-candidates): Function renamed to
740 determine-moved-files.
741 (determine-moved-symlinks): New function, doesn't do anything
742 yet.
743 (mcvs-grab): Updated to process symlinks and use new
744 mapping-entry structure.
745
746 2002-08-26 Kaz Kylheku <kaz@ashi.footprints.net>
747
748 * code/remap.lisp (mcvs-remap): Use new mapping entry structure.
749 For now, preserve symbolic link entries as they are, processing only
750 files.
751
752 * code/mapping.lisp (equal-mapping-entries, equal-mappings): New
753 functions.
754
755 2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
756
757 * code/clisp-unix.lisp (initialize-instance link-error): Make
758 error message less confusing about which path refers to the
759 object being created, and which path refers to what it links to.
760
761 * code/mapping.lisp (mapping-rename-files): Bugfix: destructuring-bind
762 appeared in place of with-slots.
763 (mapping-synchronize): When creating symbolic link, ensure that
764 its directory exists.
765 (mapping-update): Likewise.
766
767 2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
768
769 * code/add.lisp (mcvs-add): Change to new mapping-entry data structure
770 and handle symbolic links.
771
772 * code/create.lisp (mcvs-create): Likewise.
773
774 * code/filt.lisp (make-filt-hash, mcvs-filt): Change to new
775 mapping-entry data structure. Filt does not care about symlinks.
776
777 * code/types.lisp (types-remove-ignores, types-make-cvs-adds):
778 Change to new mapping-entry data structure.
779
780 * code/mapping.lisp (mapping-generate-name): Renamed to
781 mapping-generate-id. Interface changes slightly.
782 (mapping-extract-kind): New function, factored out from mcvs-generic.
783 (mapping-update): Unlink existing symbolic link before
784 re-linking it.
785
786 * code/convert.lisp (mcvs-convert): Use new name and interface
787 of mapping-generate-name function.
788
789 * code/create.lisp (mcvs-create): Likewise.
790
791 * code/generic.lisp (mcvs-generic): Code to extract :file
792 entries from map factored out to mapping-extract-kind.
793
794
795 2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
796
797 * code/generic.lisp (mcvs-generic): Use new mapping-entry data structure.
798 Filter out mapping entries which are other than of the :file type, so
799 we don't pass to CVS things it doesn't know about, like symbolic
800 links.
801
802 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
803
804 Support for symbolic links added to the mapping module. The format of
805 the map file has changed to accomodate this. The new format of the
806 list entries is (:keyword "id" "path" ...) where the keyword is either
807 :file or :symlink (for now, extensible obviously), "id" is a unique
808 identifier (for regular files, it is their MCVS/F-* name) and "path" is
809 the sandbox path. Other things can follow; for symlinks, there is a
810 string representing the symlink target. Internally, a new data type
811 called mapping-entry is used; this is a struct. So the functions which
812 read and write maps now convert between the struct format and the above
813 format.
814
815 * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
816
817 * code/unix-bindings/impl.c (impl_readlink): New function.
818
819 * code/clisp-unix.lisp (readlink-error): New condition.
820 (initialize-instance readlink-error): New method for
821 initialize-instance generic function, specialized for readlink-error.
822 (readlink): New function.
823
824 * code/mapping.lisp (mapping-entry): New struct, with slots
825 file, id, path and target.
826 (mapping-same-object-p): Renamed to mapping-same-id-p.
827 (mapping-object-lookup, mapping-moved-p): Unused functions removed.
828 (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
829 mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
830 mapping-removed-files): Functions updated to use the new data
831 structure.
832 (mapping-dupe-checks): Rewritten for new data structure, and to
833 use hashes rather than silly sorting.
834 (mapping-convert-old-style-in, mapping-convert-in,
835 mapping-convert-out): New functions.
836 (mapping-read): Handle new and old style representations,
837 handle conversion to internal representation.
838 (mapping-write): Convert to new-style external representation
839 before writing out.
840 (mapping-synchronize): Handle symbolic links. If a link is missing,
841 create it. If it's present but different from what it should be,
842 erase it and re-create it.
843 (mapping-update): Use new data structure. Handle symbolic links.
844
845 * code/remove.lisp (mcvs-remove): Refer to new function
846 name, mapping-same-id-p.
847
848 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
849
850 * mapping.lisp (mapping-update): Bugfix
851 in logic which prints clobbering moves. The functions
852 abstract-to-real-path and second were applied in the wrong order.
853
854 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
855
856 * code/clisp-unix.lisp (link-error): New slot, kind. Holds
857 the string "symbolic" or "hard".
858 (initialize-instance link-error): Use new slot in constructing
859 message.
860 (link): Specify "hard" value for :kind slot of condition.
861 (symlink): New function.
862
863 * code/clisp-linux.lisp: Likewise.
864
865 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
866
867 * code/posix.lisp (execute-program): Function removed.
868 * code/clisp-linux.lisp (execute-program): Function added. Works
869 in terms of CLISP's run-program function rather than the shell
870 function, thus eliminating the need to build a command string
871 and escape shell characters.
872 * clisp-unix.lisp (excecute-program): Likewise.
873
874 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
875
876 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
877 because this name clashes with a standard Common Lisp symbol.
878 * code/types.lisp (types-let-user-edit): Updated to use new name.
879
880 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
881
882 Use getcwd to to implement mcvs-locate.
883
884 * code/unix-bindings/unix.lisp (getcwd): New call out,
885 invokes impl_getcwd.
886
887 * code/unix-bindings/impl.c (impl_getcwd): New function,
888 use getcwd() to obtain current working directory, resizing dynamic
889 buffer if necessary to get the entire path.
890
891 * code/clisp-unix.lisp (getcwd): New wrapper function.
892
893 * code/dirwalk.lisp (go-up): Function removed.
894
895 * code/mapping.lisp (mcvs-locate): Rewritten to obtain
896 path using getcwd, then try looking for MCVS directory
897 in successively shorter prefixes of that path.
898
899 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
900
901 Working back support for CLISP 2.27.
902
903 * code/install.sh: Bogus *null-pointer* hack is no longer added
904 to the generated mcvs script, since we have our own FFI functions for
905 doing the test.
906
907 * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
908 function, tests a C pointer for null, returns T or NIL.
909 * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
910 C implementation of unix-funcs:null-pointer-p.
911
912 * code/clisp-unix.lisp (pointer-null): New macro, uses
913 ffi:foreign-address-null under CLISP 2.28 or greater, or
914 unix-funcs:null-pointer-p, under an older CLISP.
915
916 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
917
918 Fixes to get clean build from fresh checkout.
919
920 * code/unix-bindings/link.sh: Remove test for presence of unix.c;
921 this was causing the failure to add the unix module to the module
922 list, which caused it to generate an empty modules.h file under
923 code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
924
925 * code/unix-bindings/Makefile: Add ``clean'' target, so we
926 can do a make clean here.
927
928 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
929
930 Retargetting CVS with new system call bindings that are not GNU/Linux
931 specific.
932
933 * code/install.sh: The way Meta-CVS is installed changes now.
934 The argument is now a prefix above a bin and lib directory.
935 Invokes clisp-link to build a new CLISP linking set in the
936 directory code/unix-bindings-linking-set. The lisp executable
937 (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
938 memory image is also copied there under the name lispinit.mem.
939 The mcvs script is then generated in $TARGET/bin, correctly referring
940 to these images.
941
942 * code/system.lisp: Choose the new clisp-unix module, if running
943 under a CLISP image which has the new bindings loaded. Otherwise fall
944 back on the old clisp-linux, which uses the linuxlibc6 module.
945
946 * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
947 but targetting new bindings in the unix-funcs package.
948
949 * code/clisp-link: New file. Script borrowed from CLISP distribution,
950 needed for building CLISP executables with custom modules added.
951
952 * code/linkkit: New directory. This is needed by by clisp-link.
953 * code/linkkit/modules.c: Borrowed file from CLISP, needed
954 by clisp-link.
955 * code/linkkit/clisp.h: Likewise.
956 * code/linkkit/modules.d: Likewise.
957
958 * code/unix-bindings: New directory. This is a module kit used
959 by clisp-link to extend the Lisp executable and memory image
960 with new C functions.
961
962 * code/unix-bindings/link.sh: Definitions of variables needed
963 by clisp-link.
964
965 * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
966 interface to the external C functions. Most of the functions call
967 directly into the system's C library, but a few call to wrapper
968 functions. Compiling unix.lisp produces a unix.c file which is
969 compiled and linked into the CLISP executable, and a unix.fas which
970 contains the Lisp interface bits that are loaded as part of the Lisp
971 image.
972
973 * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
974
975 * code/unix-bindings/impl.c: Some special functions that help
976 implement the binding.
977
978 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
979
980 More changes to syntax of grab command. Now -A must be
981 specified to do a grab onto main trunk.
982
983 * code/mcvs-main.lisp (*grab-options*): -A option added.
984
985 * code/grab.lisp (mcvs-grab): Test for presence of -A
986 option. Check that either -A or -r is present, but not both.
987
988 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
989
990 Syntax of grab command changed. The branch is no longer
991 specified as an argument after the module name. Rather,
992 it is specified using the -r option.
993
994 * code/mcvs-main.lisp (*grab-options*): -r added to list.
995
996 * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
997 syntax change, support -r option.
998
999 * INSTALL: Instructions change, since building the GNU/Linux libc
1000 into CLISP is no longer required.
1001
1002 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1003
1004 * docs/meta-cvs.latex: Rewrote most of Introduction.
1005
1006 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1007
1008 New scripts for building LaTeX document. These do the right thing
1009 to minimize the number of times latex is run. Make proved useless.
1010
1011 * docs/generate.sh: New file.
1012 * docs/cleanup.sh: New file.
1013
1014 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
1015
1016 * INSTALL: Revising CLISP installation instructions to the
1017 easier method using --build.
1018
1019 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
1020
1021 * README: Renaming file to QUICK-GUIDE.
1022
1023 2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
1024
1025 * code/generic.lisp (mcvs-generic): Support new keyword,
1026 :no-fix-empty-file-list. Specifies that if no files are passed,
1027 and the --metaonly option is not present, the CVS command is to be
1028 executed without any file arguments.
1029 (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
1030 calling mcvs-generic. Thus commit now has the behavior that
1031 when it is passed no file arguments, it does a true global commit.
1032
1033 2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1034
1035 * code/restore.lisp (mcvs-restore): Work properly with
1036 partial sandboxes; that is, move things to lost+found
1037 directory at the top of the partial sandbox, rather than
1038 the abstract root.
1039
1040 2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1041
1042 * code/mcvs-main.lisp (usage): Updated to describe restore
1043 command.
1044
1045 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1046
1047 * code/grab.lisp (mcvs-grab): If there are only added files
1048 or only removed files, don't bother scanning any files,
1049 since there are no moves to compute.
1050
1051 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1052
1053 * code/find-bind.lisp (vector-bind): New macro, binds symbols
1054 to elements of a vector.
1055 (find-bind-extract-vals): Rewrite using vectors. Fixes
1056 a bug: the old version was not handling duplicate keys
1057 properly.
1058 (find-bind): Integrate with new find-bind-extract-vals.
1059
1060 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
1061
1062 Directory structure rearrangement; source files are moved
1063 under code/ subdirectory. A documentation directory is added.
1064
1065 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1066
1067 * move.lisp (move-guts): When moving multiple sources to
1068 a target directory, provide a restart to skip a bad source.
1069
1070 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1071
1072 * seqfuncs.lisp (intersection-difference): Support a new
1073 keyword parameter :squash-nil.
1074
1075 * mapping.lisp (mapping-difference): Filter non-moved pairs
1076 directly in intersection-difference call using :squash-nil,
1077 eliminating the need to do a second remove-if pass.
1078
1079 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1080
1081 * mapping.lisp (mapping-difference): Rewrite using
1082 intersection-difference.
1083
1084 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1085
1086 * grab.lisp (added-removed): Function removed.
1087 (mcvs-grab): Use new intersection-difference function
1088 instead of added-removed.
1089
1090 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1091
1092 * seqfuncs.lisp (intersection-difference): New function.
1093
1094 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1095
1096 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
1097 Extra parameter added to specify subdirectory. File analysis
1098 is only done on visible files.
1099 (mcvs-grab-wrapper): Take optional parameter to specify
1100 subdirectory.
1101
1102 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1103
1104 * mapping.lisp (mapping-update): If no-delete-removed is
1105 true, nevertheless print the ``* removing...'' messages
1106 to show that removal from the mapping is going on.
1107
1108 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1109
1110 * remap.lisp (mcvs-remap): Remap only the visible sandbox,
1111 and combine resulting map with the invisible portion.
1112
1113 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1114
1115 * remove.lisp (mcvs-remove): Added path conversions to support
1116 partial sandboxes.
1117
1118 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1119
1120 * generic.lisp (mcvs-generic): Added path conversions to support
1121 partial sandboxes.
1122
1123 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1124
1125 * add.lisp (mcvs-add): Added path conversions to support
1126 partial sandboxes.
1127
1128 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1129
1130 * grab.lisp (mcvs-grab): Bugfix: determination of common words
1131 was failing on small file sets because the min function was
1132 used instead of the max to compute the threshold.
1133
1134 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1135
1136 * move.lisp (source-check): Use real source path for checking
1137 against MCVS/ area.
1138 (mcvs-move): Ditto for destination path.
1139
1140 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1141
1142 * mapping.lisp (mapping-update): Make sure only those files
1143 are processed which are visible in the sandbox. If a file
1144 is moved out of or into visibility, this is indicated in the
1145 diagnostic output.
1146
1147 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1148
1149 * mapping.lisp (real-path-exists): Use path-prefix-equal, because
1150 that handles all the tricky cases.
1151 (abstract-to-real-path): Handle the case when abstract path
1152 is the same as the path prefix, with or without the trailing
1153 slash.
1154
1155 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1156
1157 Start of experimental ``partial sandbox'' work.
1158
1159 * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
1160 constants, hold name of administrative file MCVS/DISPLACED which stores
1161 the displaced path prefix.
1162 (*displaced-path-prefix*): New special variable, holds displaced
1163 path prefix read from MCVS/DISPLACED.
1164 (*displaced-path-length*): New special variable, holds length
1165 of string stored in *displaced-path-prefix*.
1166 (real-path-exists, abstract-to-real-path, real-to-abstract-path):
1167 New functions for mapping between actual sandbox path, and
1168 the abstract sandbox path stored in the mapping.
1169 (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
1170 administrative file, and set up the new special variables.
1171 (mapping-synchronize): Only operate on files that are present
1172 in the sandbox; i.e. that have real paths corresponding to their
1173 abstract paths. Convert to the real path when calling lower
1174 level file manipulation functions.
1175 (mapping-update): Likewise, but this conversion is not complete.
1176 (displaced-path-read, displaced-path-write): New functions for
1177 reading and writing MCVS/DISPLACED.
1178
1179 * checkout.lisp (mcvs-checkout): One extra optional parameter.
1180 Specifies the subdirectory for executing a partial checkout.
1181 (mcvs-checkout-wrapper): Parse out optional parameter.
1182
1183 * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
1184 specify the new parameter as nil. Eventually, grab will work
1185 over partial checkouts.
1186
1187 * move.lisp: Upgraded to work with partial sandboxes.
1188 (source-check): Convert source parameter to real path for
1189 existence check.
1190 (move-guts): Convert destination parameter to real path before
1191 invoking (stat ...) on it.
1192 (mcvs-move): Map all path arguments to abstract paths.
1193
1194 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
1195
1196 * find-bind.lisp (find-bind-extract-vals): Rewrite for
1197 efficiency. No impact on Meta-CVS, just done for the sake of improving
1198 the quality of this highly reusable code. There is specialized
1199 code now depending on whether the input sequence is a list or
1200 a vector. A single pass is made over the sequence, with multiple
1201 passes over the search values. The sequence could be large,
1202 whereas the list of search values is typically going to be small.
1203 (find-bind): Modified to reflect slight interface change
1204 in find-bind-extract-vals.
1205
1206 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
1207
1208 * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
1209
1210 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1211
1212 * purge.lisp (mcvs-purge): Factor out code for computing
1213 deleted files.
1214
1215 * mapping.lisp (mapping-removed-files): New function, contains
1216 code factored from mcvs-purge.
1217
1218 * restore.lisp: New file.
1219 (mcvs-restore, mcvs-restore-wrapper): New functions.
1220
1221 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1222
1223 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
1224 of an existing checkout.
1225
1226 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1227
1228 Adding purge command.
1229
1230 * mcvs-main.lisp (*purge-options*): New constant.
1231 (*mcvs-command-table*): New entry.
1232 (*usage*): Update.
1233
1234 * purge.lisp: New file.
1235 (mcvs-purge, mcvs-purge-wrapper): New functions.
1236
1237 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1238
1239 Grab no longer synchronizes to recreate deleted files immediately
1240 before blowing them away.
1241
1242 * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
1243
1244 * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
1245 mcvs-remove that the files being removed from the mapping,
1246 don't exist in the sandbox. So it's not necessary to call
1247 mapping-synchronize, and mapping-update can be told via
1248 :no-delete-removed t not to try to remove deleted files.
1249
1250 * mapping.lisp (mapping-update): New no-delete-removed keyword
1251 parameter.
1252
1253 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1254
1255 * create.lisp (mcvs-create): Take out vendor branch parameter,
1256 use "Created-by-Meta-CVS" as the vendor tag.
1257 (mcvs-create-wrapper): Take out vendor branch parameter.
1258
1259 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1260
1261 * generic.lisp (mcvs-tag-wrapper): This one needs to include
1262 meta files by default.
1263
1264 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1265
1266 Moving toward sane, user-friendly handling of meta-files.
1267 Two new options are added --meta and --metaonly.
1268 All reporting commands---diff, log, annotate---default to
1269 not including the meta files. The update command remains special.
1270 It does not include meta files if given filename arguments.
1271 If invoked with no arguments, it does a global CVS up.
1272 The commit command defaults to including the meta files.
1273 The three options simply override default behavior.
1274
1275 * options.lisp (*nometa-option*): Eliminated useless docstring.
1276 (*meta-option*): New variable.
1277 (*nometa-option*): New variable.
1278 (filter-global-options): Clean rewrite using find-bind.
1279
1280 * generic.lisp (mcvs-generic): New keyword parameters
1281 default-include-meta-files, need-update-after. Implements new logic
1282 related to the new options. Performs (mapping-update) if
1283 need-update-after is true and metafiles were subject to cvs update.
1284 (mcvs-commit-wrapper): Calls mcvs-generic with
1285 :default-include-meta-files t.
1286
1287 * update.lisp (mcvs-update): No longer overrides the *nometa-option*
1288 special variable. Passes :need-update-after t to mcvs-generic.
1289
1290 * mcvs-main.lisp (*cvs-options*): New options entered into list.
1291
1292 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1293
1294 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
1295 monadic functions.
1296
1297 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1298
1299 Word comparisons are case-insensitive in mcvs grab now.
1300 Also, common words are determined and eliminated from the correlation.
1301 Common words are those that appear in at least 5 of the
1302 added or removed files, or 20% of them, whichever is greater.
1303
1304 Noticed some unnecessary use of string-lessp on F-file names in
1305 mapping.lisp.
1306
1307 * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
1308 string comparisons.
1309 (added-removed): Use string< instead of string-lessp for comparing
1310 paths.
1311 (determine-common-words, eliminate-common-words): New functions.
1312 (move-candidates): Acceptance threshold reduced to 30%, since
1313 elimination of common words reduces the similarity correlation.
1314 (mcvs-grab): Use string< instead of string-lessp when sorting paths.
1315 Do the common words computation.
1316
1317 * mapping.lisp (mapping-dupe-check, mapping-write,
1318 mapping-difference): Use string< instead of string-lessp.
1319
1320 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1321
1322 * memoize.lisp (factor-memo-labels): New function, rips apart
1323 functions generated by memoize-expander, in order to factor
1324 out the multi-hash defining let blocks.
1325 (memoized-labels): Interface corrected. Also, use new function to
1326 generate a labels block that allows for mutually recursive memoized
1327 functions which preserve hash contents across arbitrarily mutually
1328 recursive calls. This is done by enclosing the functions in one big
1329 let block which binds all the hashes.
1330
1331 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1332
1333 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
1334 parameters.
1335
1336 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1337
1338 Adding some cool code: a multi-hash datatype which implements
1339 multi-dimensional sparse arrays using a tree of hash tables,
1340 and a function memoizer which uses multi hash to index on
1341 function arguments.
1342
1343 * multi-hash.lisp (multi-hash): New class.
1344 (initialize-instance): New method on multi-hash.
1345 (multi-hash-common-code): New macro.
1346 (get-multi-hash, set-multi-hash): New functions.
1347
1348 * memoize.lisp (define-memoized-function,
1349 memoized-labels): New macros.
1350 (remove-key-aux-rest strip-lambda-list, extract-tests,
1351 remove-tests, memoize-expander): New functions.
1352
1353 * seqfuncs.lisp (lcs-list): Function is now correctly
1354 memoized using define-memoized-function.
1355
1356 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
1357
1358 * grab.lisp (read-word-hash): Memory use optimizations: use smaller
1359 initial size for tokens; re-use the same token object when the
1360 hash already contains a duplicate.
1361 (correlate): Renamed to correlate-word-hashes.
1362 (correlate-paths): New function; computes a confidence-reducing
1363 factor based on the differences between two paths.
1364 (move-candidates): Use correlate-paths to lower the confidence
1365 for distant moves. This could help sort out ambiguities when
1366 projects contain very similar or duplicate files which are subject
1367 to parallel moves.
1368
1369 * seqfuncs.lisp (lcs-list, lcs-vector,
1370 longest-common-subsequence): New functions.
1371
1372 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
1373
1374 New feature: grab command. Takes snapshot of code and imports
1375 it to a branch, trying to determine which of the added and
1376 removed files are actually moves.
1377
1378 * grab.lisp: New file.
1379 (read-word-hash, word-hash-file, correlate, added-removed,
1380 move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
1381
1382 * mcvs-main.lisp (*grab-options*): New constant.
1383 (*mcvs-command-table*): New entry.
1384 (*usage*): New text.
1385
1386 * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
1387 if :no-generate t is specified.
1388
1389 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1390
1391 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
1392 Tells the checkout function not to unpack the MCVS directory.
1393 This will be useful when mcvs-checkout is used as a subfunction
1394 of the new grab command. Failed CVS call is now turned into
1395 an error. The MCVS subdirectory is *always* deleted, even if the
1396 checkout did not create the checkout directory.
1397
1398 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1399
1400 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
1401 passing down keyword parameters to recursive call.
1402
1403 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1404
1405 * posix.lisp (canonicalize-path): Use concatenate-string
1406 instead of format.
1407
1408 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1409
1410 * posix.lisp (parse-posix-namestring): Clean rewrite.
1411
1412 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1413
1414 The ``import'' command is renamed to ``create''.
1415
1416 * mcvs.main (*create-options*): Renamed to *import-options*.
1417 (*mcvs-command-table*): Updated.
1418 (*usage*): Updated.
1419
1420 * import.lisp: File renamed to create.lisp.
1421 (mcvs-import): Renamed to mcvs-create; some arguments renamed.
1422 (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
1423
1424 * README: Updated.
1425
1426 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1427
1428 * split.lisp (split-fields): Optimized to extract tokens directly
1429 from the input string using subseq rather than construct them
1430 character by character.
1431
1432 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1433
1434 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
1435
1436 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1437
1438 * clisp-linux.sh (:clisp-old): Added to *features*
1439 for CLISP 2.28 or higher.
1440 (*null-pointer*): Only defined when :clisp-old is present.
1441 (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
1442 feature is not present.
1443
1444 * install.sh: Don't do *null-pointer* workaround hack
1445 unless :clisp-old feature is present in the memory image.
1446
1447 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1448
1449 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
1450 to strip MCVS/ prefix from those F- files which don't match
1451 any type entries. This caused cvs add to fail for unsuffixed
1452 files.
1453
1454 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
1455
1456 * types.lisp (types-to-import-wrapper-args): Don't use backquote
1457 template to generate a list that will be destructively catenated
1458 by mapcan.
1459
1460 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
1461
1462 * checkout.lisp (mcvs-checkout): If a checkout directory is
1463 created and then the CVS checkout fails, the directory is
1464 then removed.
1465
1466 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1467
1468 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
1469 values in find-bind-extract-vals, instead of in the expansion of
1470 find-bind, thereby reducing some macro bloat.
1471
1472 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1473
1474 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
1475 If it the mappings differ, an error is signaled. The user can choose
1476 to ignore the error, in which case MAP is clobbered.
1477
1478 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1479
1480 Adding mcvs remap command.
1481
1482 * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
1483 behavior is now preorder (visit directory before its entries).
1484 A keyword is provided to select the old postorder behavior.
1485 A catch is provided in dirwalk-fi that allows the caller to
1486 skip processing the currently traversed directory. The for-each-*
1487 macros provide a local function called (skip) to do this.
1488 (delete-recursive): This function depends on postorder behavior
1489 in for-each-file-info, so it explicitly selects it now.
1490
1491 * mcvs.lisp (*remap-options*): New constant.
1492 (*mcvs-command-table*): Add entry for new function.
1493 (*usage*): Describes new function.
1494
1495 * remap.lisp: New file.
1496 (mcvs-remap, mcvs-remap-wrapper): New functions.
1497
1498 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
1499
1500 * sync.lisp (synchronize-files): Signal an error when the two files
1501 to be synchronized have the same time stamp. Provide two restarts
1502 for doing the synchronization either way.
1503
1504 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
1505
1506 * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
1507 sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
1508 rather than #:DOWNPATH-NNN.
1509
1510 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1511
1512 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
1513 so that it does not ignore any F- files.
1514
1515 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1516
1517 * mapping.lisp (mapping-update): Provide restart that allows
1518 user to ignore file removal error.
1519
1520 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
1521
1522 Porting to CMUCL.
1523
1524 * system.lisp: Conditionally load new module cmucl-unix.
1525
1526 * mapping.lisp (mapping-dupe-check, mapping-write,
1527 mapping-difference): Fixes related to sort function; we were
1528 relying on CLISP's preservation of the cons cell order.
1529
1530 * cmucl-unix.lisp: New file.
1531
1532 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1533
1534 * checkout.lisp (mcvs-checkout): Allow -d to specify current
1535 directory as the checkout directory. Do not complain if the
1536 target directory exists, just try to use it anyway,
1537 unless it is the root of an existing Meta-CVS sandbox. Use
1538 the mapping-update function to update the sandbox.
1539 These changes allow a Meta-CVS sandbox to blend with an existing
1540 directory structure, a useful feature.
1541
1542 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1543
1544 * generic.lisp (mcvs-generic): Change how empty file argument list
1545 is handled. Rather than rewriting it to '(".") we do a proper
1546 map-prefix-lookup. Synchronizing and invoking CVS is elided
1547 if the resulting list of files to process is empty and the --nometa
1548 option is specified.
1549
1550 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1551
1552 * branch.lisp (parse-sticky): New function.
1553 (read-cvs-entries): New function.
1554 (same-tag-check): New function.
1555 (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
1556 parse-sticky to return structured tag.
1557 (mcvs-merge): Make use of structured tags.
1558 (mcvs-list-branches): Make use of structured tags. Indicate
1559 when sandbox is inconsistently sticky.
1560
1561 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1562
1563 * remove.lisp (mcvs-remove): Corrected careless bracketing
1564 introduced on 2002-03-15 that rendered this function ineffective.
1565
1566 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1567
1568 Absolute paths resolved against sandbox root.
1569
1570 * posix.lisp (path-absolute-p): New function. Predicate to
1571 test whether a path is absolute.
1572
1573 * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
1574 function detects absolute path, and treats it as relative to
1575 sandbox root.
1576
1577 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1578
1579 New switch command added, plus sticky tag related
1580 bugfixes and enhancement of mcvs list-branches.
1581
1582 mcvs-main.lisp (*switch-options*): New constant.
1583 (*mcvs-command-table*): New entries.
1584 (*usage*): New help text.
1585
1586 branch.lisp (what-branch-are-we-on): Function renamed to
1587 what-tag-are-we-on. Tests the first letter which is T or N; if
1588 it is not T, then it's not a branch tag. If there is a tag,
1589 it returns two values; the second value is NIL if it is not
1590 a branch tag, T otherwise.
1591 (mcvs-merge): Modified to use what-tag-are-we-on.
1592 (mcvs-list-branches): Show additional information about the
1593 current sticky tag.
1594 (mcvs-merge-wrapper): Fix wrong parenthesization introduced
1595 earlier today.
1596 (mcvs-switch-wrapper): New function.
1597
1598 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1599
1600 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
1601
1602 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1603
1604 New command to list branches.
1605
1606 * mcvs-main.lisp (*list-branches-options*): New constant.
1607 (*mcvs-command-table*): Entries for new command added.
1608 (*usage*): Help text added.
1609
1610 * branch.lisp (mcvs-list-branches,
1611 mcvs-list-branches-wrapper): New functions.
1612
1613 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1614
1615 * branch.lisp (where-is-the-repository): New function.
1616 (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
1617 the -d global option.
1618
1619 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1620
1621 * branch.lisp (what-module-is-this): New function.
1622 (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
1623 the branch being merged. This fixes the failure to merge added files.
1624 (mcvs-merge): Use mcvs-update rather than directly using cvs.
1625
1626 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1627
1628 Implemented remerge command; redo a merge without moving
1629 around any tags.
1630
1631 * branch.lisp (mcvs-merge): New keyword parameter remerge-p
1632 to indicate that a re-merge should be done, plus logic for
1633 doing so.
1634 (mcvs-remerge-wrapper): New function.
1635
1636 * mcvs-main.lisp (*remerge-options*): New constant.
1637 (*mcvs-command-table*): New entry for remerge command.
1638
1639 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1640
1641 First cut at implementing more automated branching and merging.
1642
1643 * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
1644 (*mcvs-command-table*): New entries for branch and merge commands.
1645 (*usage*): New help text.
1646
1647 * branch.lisp: New file.
1648 (*branch-char*): New constant.
1649 (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
1650 mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
1651 mcvs-merge-wrapper): New functions.
1652
1653 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
1654
1655 checkout.lisp (mcvs-checkout): Emit informational message
1656 when checkout completes, because it's not obvious what directory
1657 was just created.
1658
1659 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
1660
1661 Error checking added to mcvs move: verifies that all
1662 sources exist and are known to Meta-CVS.
1663
1664 * move.lisp (source-check): New function.
1665 (simple-rename, simple-move-to-dir): Use new function.
1666
1667 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1668
1669 * rcsparse.lisp: File renamed to rcs-utils.lisp.
1670 (rcs-delta): New slot, delta-hash.
1671 (rcs-make-delta-hash): New function.
1672 (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
1673
1674 * convert.lisp: require changed to match file rename.
1675
1676 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1677
1678 Some new macros for slot access.
1679
1680 * slot-refs.lisp: New file.
1681 (with-slot-refs): New macro.
1682 (with-multi-slot-refs): New macro.
1683
1684 * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
1685 rcs-parse-delta): Replace uses
1686 of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
1687
1688 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
1689
1690 Adding delta parsing to RCS parser.
1691
1692 * rcsparse.lisp (rcs-delta): New struct.
1693 (rcs-file): New slot, deltas.
1694 (rcs-parse-newphrases): New function, factors out parsing of
1695 ``newphrases'' syntactic element out of rcs-parse-admin.
1696 (rcs-parse-admin): Use rcs-parse-newphrases.
1697 (rcs-parse-delta, rcs-parse-deltas): New functions.
1698 (rcs-parse): Parse both admin and deltas; store deltas in new
1699 rcs-file slot.
1700
1701 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
1702
1703 * posix.lisp (parse-posix-namestring): New function. Converts POSIX
1704 path to CL Path object.
1705
1706 * rcsparse.lisp: New file, implements RCS version file parser.
1707 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
1708 (rcs-peek-token, rcs-read-token): New generic functions.
1709 (rcs-extract-id-sym-or-num, rcs-extract-string,
1710 rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
1711 rcs-special-p): New functions.
1712
1713 * convert.lisp (classify-tags): Work with association list rather
1714 than raw strings.
1715 (mcvs-convert): Use rcs-parse to extract tags. Fix call to
1716 mapping-generate name. Use parse-posix-namestring when opening
1717 version file. Generate informative chatter.
1718
1719 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1720
1721 * remove.lisp (mcvs-remove): More detailed error checking.
1722 Checks for remove attempts against MCVS/ area, removes of local
1723 files not versioned under Meta-CVS, and nonexistent files.
1724
1725 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1726
1727 * add.lisp (mcvs-add): Error message changed to tell user to use
1728 -R to add directory.
1729
1730 * remove.lisp (mcvs-remove): New generalized boolean parameter
1731 indicates to do a recursive remove. This is controlled by the
1732 -R option which already exists. Behavior changed to not act
1733 on directories unless recursion is explicitly requested.
1734 (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
1735 to mcvs-remove.
1736
1737 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1738
1739 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
1740
1741 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1742
1743 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
1744 module, when testing whether directory exists or was created properly.
1745
1746 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1747
1748 Update takes file arguments now.
1749
1750 * update.lisp (mcvs-update): If filename arguments are given, then
1751 just call mcvs-generic to do the work, but suppress the operation on
1752 meta files. If no filename arguments are given, then update everything.
1753 If the -p option is present, no synchronization is needed, before or
1754 after.
1755 (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
1756
1757 * mcvs-main.lisp (*update-options*): Add "p" option.
1758
1759 * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
1760 a generalized boolean which can tell the function to do a
1761 mapping-synchronize after executing the CVS command.
1762
1763 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1764
1765 * filt.lisp (filt-select-map): Do allow a date and revision to be
1766 specified; the revision could be a branch tag.
1767
1768 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1769
1770 * mapping.lisp (malformed-map): New function.
1771 (mapping-dupe-check): Perform extra error checks when reading
1772 mapping, and turn them into a condition with a ``nice'' error message.
1773
1774 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1775
1776 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
1777 when reading map. It's easy to give CVS is a nonexistent tag.
1778
1779 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1780
1781 The filt command takes arguments to select alternate revision
1782 of map.
1783
1784 * mcvs-main.lisp (*filt-options*): New constant.
1785 (*mcvs-command-table*): Updated with new options.
1786 (mcvs-debug-shell): Restart name changed during debugging of filt
1787 changes.
1788
1789 * filt.lisp (filt-select-map): New function. Loads either the
1790 local mapping, or retrieves an alternate mapping from CVS based
1791 on command line options.
1792 (mcvs-filt): Use filt-select-map rather than mapping-read.
1793
1794 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1795
1796 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
1797 metafiles.
1798
1799 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1800
1801 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
1802 MAP-LOCAL.
1803
1804 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1805
1806 Fix trailing slash bug in mcvs mv.
1807
1808 * move.lisp (simple-move-to-dir): Canonicalize path after catenating
1809 destination and file base name. This nukes a double slash if
1810 we move to a name with a trailing slash.
1811 (move-guts): Treat a destination name that has a trailing slash
1812 as a directory, unless it exists already as a non-directory.
1813
1814 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1815
1816 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
1817 "error-continue".
1818 (*usage*): Update and reformat help text.
1819 (mcvs-execute): Process "error-terminate" and "error-continue"
1820 options.
1821
1822 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1823
1824 * mapping.lisp (mapping-update): Messages related to moving,
1825 adding or removing files promoted to terse level, so only -Q
1826 can suppress them.
1827
1828 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1829
1830 * update.lisp (mcvs-update): Changing level of chatter messages.
1831 * move.lisp (mcvs-move): Likewise.
1832 * add.lisp (mcvs-add): Likewise.
1833 * remove.lisp (mcvs-remove): Likewise.
1834 * checkout.lisp (mcvs-checkout): Likewise.
1835 * generic.lisp (mcvs-generic): Likewise.
1836 * import.lisp (mcvs-import): Likewise.
1837 * mapping.lisp (mapping-dupe-check): Likewise.
1838 (mapping-update): Likewise.
1839
1840 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1841
1842 Support for -q, -Q and -e global options.
1843
1844 * posix.lisp (*editor*): New special variable.
1845 (edit-file): Check *editor* variable; if not nil, use it.
1846
1847 * mcvs-main.lisp (*usage*): Update help text.
1848 (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
1849 Set *editor* if -e is specified.
1850
1851 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1852
1853 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
1854 (*cvs-options-arg*): Add missing "r".
1855 (*usage*): New constant, help text.
1856 (mcvs-execute): Process help and version command line options.
1857
1858 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1859
1860 * options.lisp (parse-opt): Make error messages more consistent.
1861
1862 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1863
1864 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
1865 the user might not care about the remaining unmatched list.
1866
1867 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1868
1869 * find-bind.lisp (find-bind): Documentation string change. Clarify
1870 that default values are substituted whenever a variable would
1871 otherwise be bound to the value NIL, even through an explicit
1872 match.
1873
1874 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1875
1876 Sane filtering of -d option in checkout.
1877
1878 * find-bind.lisp (find-bind): Variable bindings can specify
1879 a third element, which provides a default value for any variables
1880 that turn out NIL.
1881
1882 * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
1883 and use it to override the name of the checkout directory,
1884 the way CVS checkout does it.
1885
1886 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1887
1888 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
1889
1890 * add.lisp (mcvs-add): Use old types as well as new types
1891 to filter for ignores.
1892
1893 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1894
1895 * find-bind.lisp: New file.
1896 (find-bind-extract-vals): New function.
1897 (find-bind): New macro.
1898
1899 * error.lisp (restart-destructure): Macro removed.
1900 (mcvs-error-handler): Uses generic find-bind instead of
1901 restart-destructure.
1902
1903 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1904
1905 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
1906 if F- file name is not found in hash table.
1907
1908 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1909
1910 Commit is handled through mcvs-generic, so it can take
1911 filename arguments, and honor --nometa.
1912
1913 * commit.lisp: File removed.
1914 (mcvs-commit): Function removed.
1915 (mcvs-commit-wrapper): Moved to generic.lisp.
1916
1917 * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
1918 changed to invoke mcvs-generic.
1919 (mcvs-generic): Only add TYPES file to list if it actually
1920 exists.
1921
1922 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1923
1924 New --nometa command line option.
1925
1926 * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
1927 (mcvs-execute): Filter global options to recognize
1928 Meta-CVS-specific ones.
1929
1930 * options.lisp (*nometa-option*): New special variable.
1931 (filter-global-options): New function.
1932
1933 * generic.lisp (mcvs-generic): Honor *nometa-option* special
1934 variable.
1935
1936 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1937
1938 * generic.lisp (mcvs-generic): Make sure TYPES file is
1939 included in list of files.
1940
1941 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1942
1943 * mcvs-main.lisp (*add-options*): Support -R option for add.
1944 Thus, recursive add works now.
1945
1946 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1947
1948 Fix mcvs filt so it handles suffixed F- files properly.
1949
1950 * filt.lisp (make-filt-hash): New function.
1951 (mcvs-filt): After matching hex digits, also check for
1952 a suffix match.
1953
1954 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1955
1956 Support for file type keyword treatment under mcvs add.
1957
1958 * add.lisp (mcvs-add): Restructured to build up list of new file
1959 suffixes, allow the user to edit the file which determines how
1960 they are treated, filter out ignored files and pass -k options
1961 to multiple cvs adds.
1962
1963 * types.lisp (*mcvs-new-types*): New constant.
1964 (*types-comments*): Constant moved here from import.lisp.
1965 (types-remove-ignores): New function. Code factored out from
1966 mcvs-import.
1967 (types-let-user-edit): Likewise.
1968 (types-make-cvs-adds): New function.
1969
1970 * import.lisp (*types-comments*): Constant removed. Moved to
1971 types.lisp
1972 (mcvs-import): Code factored out to new functions in types.lisp, which
1973 are also used by add.lisp.
1974
1975 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1976
1977 * print.lisp: New file.
1978 (print-assoc-list): New function.
1979 * types.lisp: Use print-assoc-list to nicely print the types.
1980 * import.lisp (mcvs-import): Don't bother getting user to
1981 edit the types if the type list is empty. In fact, don't
1982 even create the file.
1983
1984 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1985
1986 * add.lisp (mcvs-add): Use new form of mapping-generate-name.
1987
1988 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1989
1990 * import.lisp (mcvs-import): Fix broken restart for re-editing
1991 the types file.
1992 (*types-comments*): Drastically shorten the help text.
1993
1994 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1995
1996 Support for filetypes in import.
1997
1998 * posix.lisp (suffix): Separator character parameter is optional;
1999 multiple occurences of character lead to one big suffix like
2000 ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
2001 a hidden file like ".exrc".
2002 (edit-file): New function, brings up text editor for specified file.
2003
2004 * clisp-linux.lisp (env-lookup): New function for environment
2005 variable lookup.
2006
2007 * types.lisp: New source file.
2008 (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
2009 (types-read, types-write, types-sanity-check,
2010 types-to-import-wrapper-args): New functions.
2011
2012 * import.lisp (*types-comments*): New constant.
2013 (mcvs-import): Restructured to build up list of file suffixes,
2014 allow the user to edit the file which determines how they
2015 are treated, filter out ignored files and pass -W options to cvs import
2016 to handle the rest. Failed cvs import is turned into restartable
2017 condition.
2018
2019 * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
2020 The F-files now carry a suffix obtained from the original file,
2021 because I have concluded that this was the only reasonable way
2022 to integrate with CVS.
2023
2024 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
2025
2026 * add.lisp (mcvs-add): Last change completely broke add due
2027 to not breaking out of the retry loop.
2028
2029 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2030
2031 * move.lisp (mcvs-move): If the mapping-update operation returns
2032 nil, or terminates by a non-local jump, restore the filemap.
2033 * mapping.lisp (mapping-update): When returning normally,
2034 return t. When returning after doing a rollback, return nil.
2035
2036 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2037
2038 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
2039 a binding of the iteration variable of a dolist, which has only
2040 one binding over the entire loop.
2041
2042 * mapping.lisp (mapping-update): Gathers up info all local
2043 clobbered files, and then throw the error. Provides restart
2044 which allows user to print the list of clobbered files, and
2045 a restart which allows the user to have those files clobbered.
2046
2047 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2048
2049 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
2050
2051 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
2052
2053 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
2054 destructuring-bind if there are no arguments.
2055
2056 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2057
2058 * mapping.lisp (mapping-difference): Reformatted documentation string.
2059 (mapping-update): Implemented a continue restart which rolls back
2060 the changes done to the local filesystem.
2061
2062 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2063
2064 * error.lisp (mcvs-error-handler): Rearranging the menu,
2065 so "T" is clumped with the main options, and any special restarts
2066 are clearly separated. Changed wording.
2067
2068 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2069
2070 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
2071 if the user re-tries the error.
2072
2073 * add.lisp (mcvs-add): CVS failure is now a restartable error;
2074 user can decide whether to roll back the effects or retry the
2075 CVS add, or terminate to keep the effects anyway despite
2076 the failed add.
2077
2078 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2079
2080 * install.sh: Stop the script if there are compilation errors.
2081
2082 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2083
2084 * error.lisp (*mcvs-errors-occured-p*): New special variable.
2085 (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
2086 * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
2087 account in computing termination status.
2088
2089 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2090
2091 * update.lisp: Remove spurious newlines from error messages.
2092 * add.lisp: Likewise.
2093 * options.lisp: Likewise.
2094 * mapping.lisp: Likewise.
2095
2096 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2097
2098 Adding some restarts around cvs update.
2099
2100 * posix.lisp (execute-command-xargs): Bail with nil return
2101 value if any command line fails.
2102
2103 * update.lisp (mcvs-update): Tests return value of execute-program
2104 and signal condition if it's nil. Provides a continue restart
2105 as well as a retry restart to try the command again.
2106
2107 * error.lisp (mcvs-error-handler): Show retry restarts as
2108 a special menu item "R".
2109
2110 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2111
2112 Added a much improved error handling routine in anticipation
2113 of better use of restarts.
2114
2115 * error.lisp: New file
2116 (restart-destructure): New macro.
2117 (*mcvs-error-treatment*): Special variable, moved here from
2118 mcvs-main.
2119 (mcvs-error-handler): New function.
2120
2121 * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
2122 (mcvs-execute): Bind error to new mcvs-error-handler instad
2123 of mcvs-top-error-handler.
2124
2125 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2126
2127 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
2128 for status command added.
2129
2130 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2131
2132 Hooking conversion tool into command structure.
2133
2134 * mcvs-main.lisp (*convert-options*): New constant.
2135 (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
2136 * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
2137 (mcvs-convert-wrapper): New function.
2138
2139 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2140
2141 Beginning work on repository conversion utility.
2142
2143 * convert.lisp: New file. Contains conversion utility
2144 to make an Meta-CVS repository from an ordinary CVS repository,
2145 while preserving all history, tags and branches.
2146 (remove-attic-component, classify-tags, read-tags,
2147 mcvs-convert): New functions.
2148
2149 * posix.lisp (suffix): New function. Computes suffix of file.
2150 (execute-program-xargs): New optional parameter, for specifying
2151 fixed part added at the end of each generated command line.
2152
2153 * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
2154 (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
2155 (mapping-generate-name): New key parameter no-dir for not adding
2156 the directory prefix.
2157
2158 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2159
2160 * checkout.lisp (mcvs-checkout): Ensure local mapping is
2161 sorted when written out, for easier comparisons.
2162
2163 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2164
2165 * sync.lisp (synchronize-files): Return :dir symbol when either
2166 argument is a directory.
2167 * mapping.lisp (mapping-synchronize): Chatter output messages
2168 are shorter. Handles :dir return value from synchronize-files.
2169 (mapping-update): New sanity checks for moved and added
2170 files, to avoid clobbering local files. Removed redundant
2171 call to ensure-directories-exit in move logic, because
2172 synchronize-files will do it anyway. Chatter messages reordered
2173 to occur before their corresponding action is done.
2174
2175 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2176
2177 Improve error handling, and builtin ``debug shell''.
2178
2179 * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
2180 can have new domain value, namely :decline.
2181 (mcvs-top-error-handler): Print error message when terminating
2182 non-restartable error. Handle new :decline treatment by
2183 simply returning.
2184 (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
2185 so that errors are caught by debugger.
2186
2187 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
2188
2189 * mapping.lisp (mapping-sort): Removed function.
2190 (mapping-write): Sort written map by F- file names,
2191 not by path names. This is far better for merging, because
2192 files stay in the same place when they are renamed.
2193
2194 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2195
2196 Added status, log and annotate.
2197
2198 * mcvs-main.lisp: (*log-options*, *status-options*,
2199 *annotate-options*): New constants.
2200 (*mcvs-command-table*): Add new entries.
2201
2202 * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
2203 mcvs-annotate-wrapper): New functions.
2204
2205 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2206
2207 Added tag command.
2208
2209 * diff.lisp: File renamed to generic.lisp.
2210 (mcvs-diff): Function renamed to mcvs-generic.
2211
2212 * generic.lisp (mcvs-generic): Function no longer dedicated to
2213 diffing only; takes CVS command to execute as an argument,
2214 also takes arguments and files as separate lists.
2215 (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
2216 (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
2217 tag command.
2218
2219 * mcvs-main.lisp (*tag-options*): New constant.
2220 (*mcvs-command-table*): New entry for tag command.
2221
2222 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2223
2224 Added workaround for operating system argument passing limitations,
2225 resembling the Unix xargs utility. Also, trimmed some fat
2226 from the basename function.
2227
2228 * clisp-linux.lisp: (*argument-limit*): New constant added.
2229 (arglist-to-command-string): Function removed.
2230 (execute-program): Function removed.
2231 (shell-interpreter): New function, wrapper for CLISP's shell
2232 function, turns exit status into T (success) or NIL (failure).
2233
2234 * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
2235 of execute-program.
2236
2237 * posix.lisp (basename): Does not canonicalize path name. This
2238 turns out to be an unnecessary performance hit in some cases.
2239 (arglist-to-command-string): New function. Similar to what was
2240 removed from clisp-linux, but this one properly escapes all
2241 shell metacharacters.
2242 (execute-program): New function, calls shell-interpreter.
2243 (execute-program-xargs): New function. Takes two argument lists.
2244 Forms one or more command lines by combining the first argument list
2245 with one or more pieces of the second argument list, and
2246 executes each command. The length of the pieces is determined
2247 by the argument passing limit.
2248
2249 * dirwalk.lisp (ensure-directories-gone): Add use of
2250 canonicalize-path because basename doesn't do it.
2251
2252 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2253
2254 Algorithmic efficiency improvements. No longer using
2255 abstract set operations to update file structure or find
2256 duplicates in the maps. Could still streamline the sorting.
2257
2258 * mapping.lisp (mapping-sort): Express more succinctly using key.
2259 (mapping-dupe-check): Rewrite using loop over sorted lists.
2260 (mapping-difference): New function for computing mapping change.
2261 (mapping-update): Modify to use mapping-difference.
2262
2263 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2264
2265 * mapping.lisp (mapping-update): When moving files, ensure
2266 that the target is unlinked if it exists.
2267
2268 * move.lisp (simple-rename): No longer do target unlinking
2269 here. Also bugfix: it wasn't handling renames of directories
2270 containing just one file.
2271
2272 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2273
2274 * mapping.lisp (mapping-dupe-check): New function for
2275 detecting duplicate objects or paths in a mapping.
2276 (mapping-sane-p): Function removed.
2277 (mapping-read): Use mapping-dupe-check to verify a map
2278 when asked by the sanity-check keyword.
2279 (mapping-update): Specify sanity check when reading MCVS/MAP.
2280
2281 * checkout.lisp (mcvs-checkout): Checkout also performs
2282 sanity check.
2283
2284 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2285
2286 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
2287 to establish proper termination status.
2288
2289 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2290
2291 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
2292 properly based on knowledge of each command's set of options.
2293 (parse-args): Function removed.
2294
2295 * options.lisp (parse-opt): Correctly process long options with
2296 arguments. Argument is part of the string, separated by = symbol.
2297
2298 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2299
2300 * options.lisp (parse-opt): When multiple options characters are
2301 bunched up into one argument, and one of them other than the
2302 last one takes an argument, then the remaining ones are
2303 considered to constitute a string which is an argument to that
2304 option. For instance -y32 means -y 32, not -y -3 -2, assuming
2305 that y is an option that requires an argument.
2306
2307 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2308
2309 Top level handler terminates by non-local exit back to
2310 mcvs function, rather than by calling (exit).
2311
2312 * mcvs-main.lisp (mcvs-top-error-handler): Restructured
2313 to call (throw 'mcvs-exit t).
2314 (mcvs-execute): Ensure that NIL is returned by normal exit.
2315 (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
2316 accordingly.
2317
2318
2319 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2320
2321 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
2322
2323 * mapping.lisp (filemap-generate-name, filemap-sort,
2324 filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
2325 filemap-prefix-matches, filemap-object-lookup,
2326 filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
2327 filemap-rename-files, filemap-sane-p): Old names removed.
2328 (mapping-generate-name, mapping-sort,
2329 mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
2330 mapping-prefix-matches, mapping-object-lookup,
2331 mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
2332 mapping-rename-files, mapping-sane-p): New names created.
2333 (mapping-read, mapping-write, mapping-synchronize,
2334 mapping-update): Edit calls to renamed functions.
2335 * add.lisp (mcvs-add): Likewise.
2336 * diff.lisp (mcvs-diff): Likewise.
2337 * filt.lisp (mcvs-filt): Likewise.
2338 * import.lisp (mcvs-import): Likewise.
2339 * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
2340 * remove.lisp (mcvs-remove): Likewise.
2341
2342 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2343
2344 Factored out repeated code for reading and writing of the MAP and
2345 MAP-LOCAL files.
2346
2347 * mapping.lisp (mapping-read, mapping-write): New functions.
2348 (mapping-synchronize, mapping-update): Use new functions.
2349 * move.lisp (mcvs-move): Likewise.
2350 * filt.lisp (mcvs-filt): Likewise.
2351 * add.lisp (mcvs-add): Likewise.
2352 * remove.lisp (mcvs-remove): Likewise.
2353 * checkout.lisp (mcvs-checkout): Likewise.
2354 * diff.lisp (mcvs-diff): Likewise.
2355 * import.lisp (mcvs-import): Likewise.
2356
2357 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2358
2359 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
2360 hard coding "MCVS" string.
2361
2362 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2363
2364 * MCVS-PAPER: Renamed to Meta-CVS-PAPER
2365
2366 * README: Change all references to MCVS to Meta-CVS, the
2367 new official name of the program.
2368 * add.lisp: Likewise
2369 * chatter.lisp: Likewise
2370 * checkout.lisp: Likewise
2371 * clisp-linux.lisp: Likewise
2372 * commit.lisp: Likewise
2373 * diff.lisp: Likewise
2374 * dirwalk.lisp: Likewise
2375 * filt.lisp: Likewise
2376 * import.lisp: Likewise
2377 * INSTALL: Likewise
2378 * mapping.lisp: Likewise
2379 * mcvs-main.lisp: Likewise
2380 * Meta-CVS-PAPER: Likewise
2381 * move.lisp: Likewise
2382 * options.lisp: Likewise
2383 * posix.lisp: Likewise
2384 * RELEASE-NOTES: Likewise
2385 * remove.lisp: Likewise
2386 * restart.lisp: Likewise
2387 * seqfuncs.lisp: Likewise
2388 * split.lisp: Likewise
2389 * sync.lisp: Likewise
2390 * system.lisp: Likewise
2391 * update.lisp: Likewise
2392
2393 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2394
2395 * move.lisp (move-guts): test the actual filesystem as well
2396 as the map for existence of a directory or file. This makes
2397 the move operation behave better. Files can be moved to an
2398 existing directory that is not known to MCVS, and a file
2399 can properly clobber a target file that is not known to MCVS.
2400
2401 * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
2402 methods for these generic functions for a NIL argument, such
2403 that they return NIL.
2404
2405 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2406
2407 * move.lisp (simple-move-to-dir): eliminated a bunch of code
2408 with the result that mcvs mv now works more like the Unix mv
2409 when moving a directory to another directory.
2410
2411 * mcvs-main.lisp (mcvs-execute): fix bogus error message
2412 when options are given but no command.
2413
2414 * README: don't use -z3 in example because this style of
2415 specifying an argument to an option doesn't work.
2416
2417 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
2418
2419 * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
2420 recursivep to be a generalized boolean variable. This allows
2421 mcvs add -R to work properly.
2422
2423 * mcvs-main.lisp (*cvs-command-options-arg*): add support
2424 for -u parameter, useful in cvs diff.
2425 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5