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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.207 - (show annotations)
Sat Oct 12 19:37:47 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.206: +26 -6 lines
Rethink some decisions in the previous change. Reusing the
name posix.lisp for a new file will cause problems for people
using mcvs grab to keep up with Meta-CVS patches.

* code/posix.lisp: Renamed to unix.lisp.

* code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for
the sake of consistency.

* code/system.lisp: Updated.

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

  ViewVC Help
Powered by ViewVC 1.1.5