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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5