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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5