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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.208 - (show annotations)
Sat Oct 12 20:34:23 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.207: +10 -0 lines
Merging from mcvs-1-0-branch.

* code/filt.lisp (mcvs-filt): Do not filter F- names if
immediately preceded by MCVS/ prefix.

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

  ViewVC Help
Powered by ViewVC 1.1.5