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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5