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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.210 - (show annotations)
Sun Oct 13 22:41:30 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.209: +12 -0 lines
Merging from mcvs-1-0-branch.

* code/mcvs-main.lisp (*export-options*): New constant.
(*mcvs-command-table*): New entries for export command.

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

  ViewVC Help
Powered by ViewVC 1.1.5