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

  ViewVC Help
Powered by ViewVC 1.1.5