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

  ViewVC Help
Powered by ViewVC 1.1.5