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

  ViewVC Help
Powered by ViewVC 1.1.5