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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5