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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5