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

  ViewVC Help
Powered by ViewVC 1.1.5