/[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.10 - (show annotations)
Tue Oct 15 03:46:53 2002 UTC (11 years, 6 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.9: +10 -0 lines
Compiler warning fix.

* code/posix.lisp (*argument-limit*): Constant moved here.

* code/clisp-unix.lisp (*argument-limit*): Constant removed.

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

  ViewVC Help
Powered by ViewVC 1.1.5