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

  ViewVC Help
Powered by ViewVC 1.1.5