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

  ViewVC Help
Powered by ViewVC 1.1.5