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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.211 - (show annotations)
Mon Oct 14 00:00:22 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.210: +17 -5 lines
Merging from mcvs-1-0-branch.

* code/mcvs-main.lisp (*usage*): Describe export and watch commands.
(*watch-options*): New constant.
(*mcvs-command-table*): New entry for watch command.

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

  ViewVC Help
Powered by ViewVC 1.1.5