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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.4 - (show annotations)
Sun Oct 13 22:39:20 2002 UTC (11 years, 6 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.3: +12 -0 lines
* code/mcvs-main.lisp (*export-options*): New constant.
(*mcvs-command-table*): New entries for export command.

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

  ViewVC Help
Powered by ViewVC 1.1.5