/[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.56 - (show annotations)
Sun Mar 2 06:56:07 2003 UTC (11 years, 1 month ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.55: +8 -0 lines
* code/restart.lisp (super-restart-case-expander): New function.
(super-restart-case): New macro.

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

  ViewVC Help
Powered by ViewVC 1.1.5