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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5