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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5