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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.206 - (show annotations)
Sat Oct 12 19:21:16 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.205: +27 -0 lines
Minor reorganization.

* posix.lisp: File renamed to paths.lisp, module renamed to "paths".
(*editor*): Variable removed.
(arglist-to-command-string, execute-programs-xargs,
invoke-editor-on): Functions removed.

* posix.lisp: New file.
(*editor*): Variable moved here from paths.lisp.
(arglist-to-command-string, invoke-editor-on): Functions moved here
from paths.lisp.

* editor.lisp: New file.
(*argument-limit*): Variable definition moved here.
(execute-programs-xargs): Function moved here from paths.lisp.

* clisp-unix.lisp: Renamed to clisp-posix.lisp.
Requires "posix" module now.
(*argument-limit*): Variable removed.

* system.lisp: Remove references to old clisp-linux module.
Added requires for new paths and execute modules.

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

  ViewVC Help
Powered by ViewVC 1.1.5