/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.256 - (show annotations)
Tue Mar 4 05:55:11 2003 UTC (11 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.255: +5 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5